如何在 Winston 中实现 "isDebugEnabled" 守卫?

How to implement an "isDebugEnabled" guard in Winston?

在Java中,记录器通常提供允许跳过不必要的日志语句的功能:

if (logger.isDebugEnabled()) {
  logger.debug(/* ... some expensive operations ... */);
}

在Java脚本中,我使用的是Winston,但是没有找到类似的API函数。

这是我能想到的最佳解决方案,但它看起来有点复杂:

const winston = require('winston');

if (winston.levels[winston.level] <= winston.levels.debug) {
  winston.debug(/* ... */);
}

有没有更简单的方法?


我知道通常不需要看守。例如,这是来自 Log4j 文档 (Java):

logger.debug("Entry number: {} is {}", i, entry[i]);

但它不会解决所有情况,例如,如果 entry[i] 被昂贵的函数调用替换,我不认为编译器能够优化它。

最后,我得到了这个辅助函数:

function isDebugLogEnabled() {
  return winston.levels[winston.level] <= winston.levels.debug;
}