log4js有1.x和2.x不同版本,网络上搜到的很多文章介绍的配置文件格式都是1.x的,主要表现在appenders配置是一个数组,而2.x配置是一个对象,下面是一个2.x的配置文件示例。
{
"appenders":{
"console":{
"type":"console"
},
"everything":{
"type":"DateFile",
"filename":"./log/everything",
"pattern": "-yyyy-MM-dd.log",
"alwaysIncludePattern": true,
"layout":{"type":"pattern", "pattern":"[%d{yyyy-MM-dd hh:mm:ss} %5.5p] %m"}
},
"db":{
"type":"DateFile",
"filename":"./log/db",
"pattern": "-yyyy-MM-dd.log",
"alwaysIncludePattern": true,
"layout":{"type":"pattern", "pattern":"[%d{yyyy-MM-dd hh:mm:ss} %5.5p] %m"}
},
"api":{
"type":"DateFile",
"filename":"./log/api",
"pattern": "-yyyy-MM-dd.log",
"alwaysIncludePattern": true,
"layout":{"type":"pattern", "pattern":"[%d{yyyy-MM-dd hh:mm:ss} %5.5p] %m"}
}
},
"categories":{
"default":{
"appenders":["console"],
"level":"all"
},
"everything":{
"appenders":["console", "everything"],
"level":"info"
},
"db":{
"appenders":["console", "everything", "db"],
"level":"info"
},
"api":{
"appenders":["console", "everything", "api"],
"level":"trace"
}
}
}
简单的说,appenders配置是一个对象,对象的每一个k/v键值对都是一个appender,名称是key,value是具体的配置信息。categories指明了实例化logger对象时使用的具体配置,如以api为名的logger示例,将会接受trace以上的日志信息,并向console、everything、api三个appender中同时输出。
具体配置参见官网文档。