Open calvinxiao opened 7 years ago
var moment = require('moment')
var winston = require('winston')
var logger = new winston.Logger({
transports: [
new winston.transports.Console({
json: false, // 在青云部署的app才开json,网易蜂巢的设置为false
colorize: false, // 本机开发才开true,线上默认false, 本地开发用环境变量控制,叫LOG_COLOR
timestamp: function() { return moment().format() }, // 输出当地时间
level: 'debug', // 环境变量控制,开发时用debug, 默认info, 用LOG_LEVEL控制
})
]
});
module.exports = logger;
// 下面的不要写到代码里面去
logger.info('calvin', {a:1})
logger.info({a:1})
logger.error('haha', new Error('abc'))
logger.debug('abc', 'abc', 'abc', {a:1})
logger.warn('warn')
logger.error('error')
winston.loggers.add('my-router', {
console: {
level: 'debug',
colorize: true,
label: 'my-router',
timestamp: function() {
return moment().format();
}
}
})
var myLogger = winston.loggers.get('my-router');
myLogger.info('Hi its me');
var nonLogger = winston.loggers.get('non-exist');
//console.log(nonLogger);
console.log(!!nonLogger);
nonLogger.info('what')
winston logger for 蜂巢
公司的Node.js项目原本选用了bunyan作为日志输出工具,用kibana查找日志非常方便。
但是在使用蜂巢的过程中发现用蜂巢内置的日志工具看json日志非常不友好,而bunyan又不能输出非json日志,pipe到bunyan cli又会增加没必要的overhead。
这时候,决定切回winston,嗯切回,以前用过。。。
winston@npm
需要用到的自定义功能
info
,开发时用debug
true
的时候输出是0时区的,可以用moment().format()
输出当地时区的日期格式(我们在东八区)支持category,也就是sub logger
winston的winston.loggers提供add和get的方法,可以支持自定义label输出
get方法遇到不存的key会返回默认logger,可以用一个字典保存已有的label,遇到不存在的label就新建一个。