在温斯顿有没有相当于log.IsDebugEnabled?

在温斯顿有没有相当于log.IsDebugEnabled

我想用这个在生产环境中跳过昂贵的日志代码,但是在开发中执行它。

例如:

 if(winston.isDebugEnabled){ // Call to expensive dump routine here dump(); } 

检查winston.debug只是检查方法是否已定义,而不检查是否已启用。

非常感谢!


编辑:添加代码示例。

我已经在logging器中添加了一个方法来实现这一点:

 logger.isLevelEnabled = function(level) { return _.any(this.transports, function(transport) { return (transport.level && this.levels[transport.level] <= this.levels[level]) || (!transport.level && this.levels[this.level] <= this.levels[level]); }, this); }; 

这通过你的logging器的每一个传输,并检查是否'想'logging指定的水平。 注意_.any是lodash ,你可以用for循环replace。

我相信你可以直接从winston那里获得,但是如果你想为不同的环境设置不同的日志级别,你应该在创buildwinston.logger的时候通过这些。

例如:

 // default log file level is info (which is the lowest by default) var logFileLevel = 'info'; if (process.env.NODE_ENV == 'production') { // only write logs with a level of 'error' or above when in production logFileLevel = 'error'; } var logger = new (winston.Logger)({ transports: [ new (winston.transports.File)({ filename: '/var/log/node-logger.log', level: logFileLevel }) ] }); 

切换传输也是有用的。 例如,您可能想要在开发过程中使用控制台传输,以及在生产中使用文件传输。

关于winston自述文件的更多文档。