如何在命令行启动Node时设置日志级别?我承认,我是一个Node.js新手,但寻找类似于node myapp.js --loglevel warn
的东西。
如何在命令行启动Node时设置日志级别?我承认,我是一个Node.js新手,但寻找类似于node myapp.js --loglevel warn
的东西。
您可以重写console.log
,console.debug
,console.error
,console.warn
函数以允许logLevels。
查看我用typescript编写的片段:
export type LogLevel = "debug" | "log" | "warn" | "error" | "none";
let logLevels = ["debug", "log", "warn", "error", "none"];
let shouldLog = (level: LogLevel) => {
// @ts-ignore
return logLevels.indexOf(level) >= logLevels.indexOf(global.logLevel);
};
// @ts-ignore
global.logLevel = "debug";
let _console=console
global.console = {
...global.console,
log: (message?: any, ...optionalParams: any[]) => {
shouldLog("log")&&_console.log(message, ...optionalParams);
},
warn: (message?: any, ...optionalParams: any[]) => {
shouldLog("warn") && _console.warn(message, ...optionalParams);
},
error: (message?: any, ...optionalParams: any[]) => {
shouldLog("error") && _console.error(message, ...optionalParams);
},
debug: (message?: any, ...optionalParams: any[]) => {
shouldLog("debug") && _console.debug(message, ...optionalParams);
},
};
然后,您可以像往常一样使用console
函数,并使用globals.logLevel="warn"
设置日志级别,...
也许不完全符合你的需求,但你可以先设置一个NODE_DEBUG环境变量来启用node调试。
例如:export NODE_DEBUG="net" && node myapp.js
将为与网络有关的node操作提供调试。
log.js
中看到的日志 - 就像你的问题一样?(我也有同样的问题)https://stackoverflow.com/questions/71082365/control-which-logs-are-shown-in-console-based-on-environment-variable - George Katsanos