在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');
}
});
被昂贵的函数调用所取代,我不会认为编译器能够优化它。
答案 0 :(得分:0)
最后,我最终得到了这个辅助函数:
function isDebugLogEnabled() {
return winston.levels[winston.level] <= winston.levels.debug;
}