如何使用 "commander" CLI 标志在节点库中设置 "winston" 日志记录级别

How use a "commander" CLI flag to set the the "winston" logging level in a node library

鉴于此示例指挥官应用程序:

// index.ts

// Config Winston:
winston.configure({
    level: 'info',
    format: winston.format.combine(winston.format.splat(), winston.format.cli()),
    transports: [new winston.transports.Console({})],
});

winston.info('Started CLI')

// Configure commander
const cli = new Command()
    .option('--debug', 'Debug mode', false) // Or --verbose, it doesn't really matter.
    .action(actionCallback); // Imported.

cli.parse();

如何根据提供的指挥官选项设置 winston 日志记录级别 --debug

我可以使用 DEBUG env var,但这有点破坏了 CLI 中 --debug 标志的用途。有什么建议吗?

最简单的解决方案,实际上是解决方法,是自己检查 --debug 标志:

const debugLevel = process.argv.indexOf('--debug') != -1 ? 'debug' : 'info';

winston.configure({
    level: debugLevel,
    format: winston.format.combine(winston.format.splat(), winston.format.cli()),
    transports: [new winston.transports.Console({})],
});