Winston: how to log to Console AND Syslog transports at the same time?
我爱Winston,并在我的所有项目中使用它。现在,我需要在我的一个应用程序中登录到syslog服务器。我想:"没问题。温斯顿有交通工具。很简单!"
但是我发现了一个问题。 npm(控制台)和syslog之间的日志级别不兼容。例:
在我的应用程序中,我已经像这样配置了我的日志(大部分是)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // To use syslog stuff. Commented out for the initial example //winston.setLevels(winston.config.syslog.levels); // Console logging should have timestamps which are off by default winston.remove(winston.transports.Console); winston.add(winston.transports.Console, {timestamp: true}); // Add my syslog transport winston.add( winston.transports.Syslog, { level: 'info', host: config.app.syslog.host, facility: config.app.syslog.facility, json: false } )); |
至此,就我的控制台日志而言,一切都很好。我可以
1 2 | winston.info('Info'); winston.error('Error'); |
我得到2个控制台日志。
但是,当我取消注释
我想:"嗯。""也许将我的日志级别设置为'info'是问题,因为
1 2 3 4 5 6 7 8 9 10 | value | npm level | syslog level ---------+-------------+---------------- 0 | silly | emerg 1 | debug | alert 2 | verbose | crit 3 | INFO | ERROR 4 | warn | warning 5 | ERROR | notice 6 | | INFO 7 | | debug |
有了这个理论,我设置了
有没有人让这个工作,所以我可以
1 2 3 | var logger = require('winston'); logger.info('Info'); logger.error('Error'); |
在初始设置后,请使用任何模块?每个日志调用都应写入我的控制台以及syslog。
还必须使用自定义级别(系统日志级别)创建传输。 在添加自定义级别之前,已创建控制台传输。 您可能有以下代码更好的机会:
1 2 3 4 5 | logger = new winston.Logger({ levels: winston.config.syslog.levels, colors: winston.config.syslog.colors }); logger.add(winston.transports.Console); |