node的log4js模块

258 阅读2分钟

log4js是什么?

记录日志的时候,需要方便查找。分类是必须的。 如果是流水账一样去记录。那么查找起来非常繁琐。失去记录日志的意义。 log4js是node提供的一个记录日志模块。

为什么学习

比较好奇,公司的日志是如何记录的。

安装

npm i log4js

开始使用

// 引用log4js
let log4js = require('log4js');
// 配置
let log4jsConfig = {
        appenders: appenders,
        categories: categories,
    };
// 创建实例
RecordLog = log4js.getLogger('record');
ErrcordLog = log4js.getLogger('errcord');
// 打印
RecordLog.info('hello RecordLog')
ErrcordLog.info('hello ErrcordLog')

以上四部分,展示了如何使用。
包括:引用,配置,创建实例,打印日志。

日志格式

// 日志时间  日志类型  日志种类  日志内容
[2020-04-06T17:21:42.317] [INFO] record - hello RecordLog

日志等级

重要的配置文件

包含:
appenders:日志出口配置
categories:日志种类配置

    // 日志出口配置
    let appenders = {
        stdout: { // 控制台,标准输出出口
            type: 'stdout'
        },
        stderr: { // 控制台,标准错误出口
            type: 'stderr'
        },
        record: { // 名字为‘record’的日志出口
            type: 'dateFile', // 输出类型,此处表示,日志以文件类型输出。
            filename: 'record', // 输出文件名字。
            pattern: '-yyyy-MM-dd.log', // 输入文件名字的后缀格式(年月日)。
            alwaysIncludePattern: true, // 总是以年月日后缀方式展现
        },
        error: {
            type: 'dateFile',
            filename: 'error',
            pattern: '-yyyy-MM-dd.log',
            alwaysIncludePattern: true,
            layout : {"type": "messagePassThrough"}; // 日志内容只包括消息
        }
    }
    
    // 日志种类配置
    let categories = {
        // 默认种类(在制造日志实例的时候,不传参数,或者参数没有日志类型)
        default: {appenders: ['record'], level: 'INFO'},
        // record种类日志(在制造日志实例的时候,传'record'参数)
        record: {appenders: ['record','stdout'], level: 'INFO'},
        error: {appenders: ['errcord'], level: 'ERROR'},
    };
    // categories里面每一项,表示一个日志种类。
    // 日志种类的appenders表示,日志选择的出口,可以是多个。
    // 日志种类的level表示,日志输出等级过滤。输出等级以上的日志。

可以尝试输入日志

日志会被根据分类配置,寻找不同的日志出口,进行输出,产生日志文件。

另外由一些细节有待补充,

比如设置,console也能记录日志