Appenders
Appenders这是给的介绍。里面介绍了,appenders不仅仅可以通过我们通常使用的直接配置的方式实现,还可以自定义一些自己的类型,并做相应的处理。
log4js.configure({
appenders:{
everything:{
type : 'file',
filename : filepath ,
maxLogSize : 204800,//bytes
backups : 3 //integer (optional, default value = 5) - the number of old log files to keep during log rolling.
},
output: {
type:"output"
}
},
categories: {
default: { appenders: [ 'everything', "output"], level: this.logLevel }
}
});
如上所示里面配置了两个appenders分别是everything和output,everything只标准的file类型保存,而output,在标准库里面并没有这个方法,这个就是我们新建的类型。
另外发现,在default的appenders里面引用了两个类型,一个是标准类型,另外一个是我们自定义的output类型
type说明
如上code,自定义了一个output的类型,此output指向的就是output所在的node_module或者NODE_PATH路径
output文件格式
/**
* Custom appenders for log4js
*/
function outputAppender(layout, config) {
var app = function (loggingEvent) {
console.log("log msg:", loggingEvent);
process.stdout.write(layout(loggingEvent, config) + "\n");
};
app.shutdown = function (complete) {
console.log(complete);
};
return app;
}
/**
* Custom appenders for log4js
*/
function configure(config, layouts) {
var layout = layouts.colouredLayout;
if (config.layout) {
layout = layouts.layout(config.layout.type, config.layout);
}
return outputAppender(layout, config);
}
exports.configure = configure;
function shutdown(complete) {
}
exports.shutdown = shutdown;
//# sourceMappingURL=output.js.map
该文件中主要导出了两个方法configure,shutdown,这两个方法是必须的,如果不到导出,会直接报错找不到out类型。
另外一点比较坑的,如果把shutdown直接写成如下居然也会报错,很奇怪:
export function shutdown(complete){
}
configure
如上代码,output文件导出了一个configure方法,在该方法里面主要做了相关的配置和layouts的设置,然后调用outputAppender方法,返回了一个app对象,该对象是我们最需要关心的问题,
app方法里面最重要的就是loggingEvent实现,我们自己在实现的时候最主要也是实现此处的代码,用于编辑自己log处理方法,loggingEvent类型的格式如下:
LoggingEvent {
startTime: 2017-08-18T06:20:30.981Z,
categoryName: 'output',
data: [ 'error test' ],
level: Level { level: 40000, levelStr: 'ERROR', colour: 'red' },
context: {},
pid: 6784 }
这个里面把我们需要的time,data,level等都做了填充,尽情的实习那自己的log输出把。
附
- log4js github地址:https://github.com/nomiddlename/log4js-node
- lib结构
如上图,里面定义了系统支持的appenders
- 支持的appenders
有兴趣的可以参考内部的appenders实现自己的appenders