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

问题描述 投票:0回答:2

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

node myapp.js --loglevel warn

的东西
node.js command-line-arguments
2个回答
5
投票

您可以覆盖

console.log
console.debug
console.error
console.warn
函数以允许 logLevels。

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

export const logLevels = ["debug", "log", "warn", "error", "none"] as const;
type LogLevel = (typeof logLevels)[number];

declare global {
  var logLevel: LogLevel;
}

const shouldLog = (level: LogLevel) => {
  return logLevels.indexOf(level) >= logLevels.indexOf(global.logLevel);
};

global.logLevel = "debug";

const _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"

设置 logLevel

1
投票

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

例如

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

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

© www.soinside.com 2019 - 2024. All rights reserved.