如何在 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;
}
在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;
}