最近因为项目需要需要使用到log4js,然后上网搜了一大堆文章,但是还是看不懂其中的配置,然后自己尝试了几次,终于搞明白了,这里就对这里的配置做一个记录。我们先看下面这个配置。
log4js.configure({
appenders: {
cheese111: { type: 'file', filename: 'cheese.log' },
cheese222: { type: 'console' },
},
categories: {
default: { appenders: ['cheese111', 'cheese222'], level: 'trace' },
xxx: { appenders: ['cheese222'], level: 'debug' },
},
});
const logger = log4js.getLogger('yyy');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Comté.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
appenders: 自定义的输出类型。首先它是一个json对象,一个key就是一个类型,所以我这里定义了2个输出类型(cheese111和cheese222),然后这2个输出类型,具体输出的是什么类型,就是里面的type对应的值,一个file,一个console。这里的file和console都是log4js内置的类型,不可随便乱写的,当然这个type还有其他几种类型,具体详见。不同的type,对应的参数也都不一样,具体可以去看下文档。这里就不做说明了。cheese111、cheese222,你还可以定义很多你喜欢的名字,其中type你可以设置任何你想要设置的任何内置类型,这里的cheese111,cheesexxx只不过是一个变量,只是定义变量,你不引用都不会调用。怎么调用就是下面要讲的部分。
categories: 英文直译就是类别。首先它也是一个json对象,一个key就是一个类别。这里有2个类别,一个default和一个xxx.这里要注意default是不能缺少,缺少的话会报错,也就是必须有default。然后我们接着看key对应的value是什么。一目了然,{ appenders: ['cheese222'], level: 'debug' } ,value有2个值,一个appenders,一个level;appenders是一个数组,数组里的值必须是appenders中的key,也就是必须是上面的cheese111和cheese222,只能从这2个值中选,你随意填个cheese999,那么会报错。然后就是level,一个字符串,就是等级。等级TRACE < DEBUG < INFO < WARN < ERROR < FATAL MARK,关于等级的更多说明,大家自行上网查找,都说的很明白。
log4js.getLogger('yyy'): 这一步内部执行了什么?这一步log4js内部会先去categories中去找,看看有么有'yyy'的key,如果有就找到对应的key,如果没有就把default给它,这样终归是会找到一个key,这个key是不是有value,value中有appenders、level2个字段,这样打印日志的时候就知道等级和要打印的类型了。