温斯顿:如何login到控制台和Syslog同时运输?
我爱温斯顿 ,并在我的所有项目中使用它。 现在我需要在我的一个应用程序中login到系统日志服务器。 我想,“没问题,温斯顿有这样的交通工具 ,很简单!”
但是我发现了一个问题。 npm(控制台)和syslog之间的日志级别不兼容。 例:
在我的应用程序中,我已经configuration了我的日志(大部分)
// 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 } ));
在这一点上,就我的控制台日志logging而言,一切都很好。 我可以
winston.info('Info'); winston.error('Error');
我得到2个控制台日志。
但是当我取消注释winston.setLevels(winston.config.syslog.levels);
部分,所以我可以正确使用系统日志级别,我不会再得到任何输出,当我winston.error('Error')
。
“嗯”,我想。 “也许有我的日志级别设置为'信息'是问题,因为info
和error
级别按npm和syslog映射之间的顺序颠倒,也许温斯顿只考虑增加日志级别。
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
有了这个理论,我设置了level: error
并再次尝试。 而且,同样的结果。
有没有人得到这个工作,以便我可以
var logger = require('winston'); logger.info('Info'); logger.error('Error');
在我最初的设置后,我需要什么模块? 每个日志调用应写入我的控制台和我的系统日志。
传输也必须使用自定义级别(系统日志级别)创build。 控制台传输是在添加自定义级别之前创build的。 这个代码你可能有更好的机会:
logger = new winston.Logger({ levels: winston.config.syslog.levels, colors: winston.config.syslog.colors }); logger.add(winston.transports.Console);