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

koc*_*ude 10 command-line-arguments node.js

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

小智 5

您可以覆盖console.log, console.debug, console.error,console.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);
  },
};
Run Code Online (Sandbox Code Playgroud)

然后您可以console照常使用这些功能并使用globals.logLevel="warn",...设置 logLevel


小智 1

可能不完全是你想要的,但你可以通过首先设置 NODE_DEBUG 环境变量来启用节点内的调试。

例如export NODE_DEBUG="net" && node myapp.js将对网络相关节点操作进行调试。

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