美文网首页
Log4js 添加自定义的Appender类型

Log4js 添加自定义的Appender类型

作者: rill_ | 来源:发表于2017-08-18 15:34 被阅读0次

    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输出把。

    image.png

    如上图,里面定义了系统支持的appenders

    • 支持的appenders
    image.png

    有兴趣的可以参考内部的appenders实现自己的appenders

    相关文章

      网友评论

          本文标题:Log4js 添加自定义的Appender类型

          本文链接:https://www.haomeiwen.com/subject/omrarxtx.html