Node.js命令行控制台日志级别



命令行启动节点时如何设置节点的日志级别?我承认,我是一个节点.js新手,但正在寻找类似node myapp.js --loglevel warn

你可以覆盖console.logconsole.debugconsole.errorconsole.warn函数以允许logLevels。

看看我用打字稿写的片段:

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环境变量来启用节点内的调试。

例如 export NODE_DEBUG="net" && node myapp.js将为与网络相关的节点操作提供调试。

https://github.com/joyent/node/blob/master/lib/net.js#L66

最新更新