如何在Winston中实现“isDebugEnabled”后卫?

时间:2018-05-15 11:12:31

标签: javascript winston

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

const winston = require('winston');

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

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

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

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

有更简单的方法吗?

我知道通常可以消除对警卫的需求。例如,这来自Log4j文档(Java):

entry[i]

但它不会解决所有情况,例如,如果$('input').on('focusin', function() { $(this).parent().find('span').addClass('test2'); }); $('input').on('focusout', function() { if (!this.value) { $(this).parent().find('span').removeClass('test2'); } });被昂贵的函数调用所取代,我不会认为编译器能够优化它。

1 个答案:

答案 0 :(得分:0)

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

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