日志输出之 log4js

2020-11-30  本文已影响0人  Kelly_zj

简介

log4js是javascript的log框架,在Nodejs中使用express框架并没有自带的日志模块,我们可以选择log4js来完成日志记录的功能。

配置

const log4js = require('log4js');
const path = require('path');
const mkdirp = require('mkdirp');
const fs = require('fs');
const log_level = 'ALL'; //设置日志输出级别
/*
配置日志的输出级别,共 ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF 八个级别
*/

function createDir(writePath) {
    var exists = fs.existsSync(writePath); //路径存在返回true,不存在返回false
    if (!exists) { //没有路径则创建
        mkdirp.sync(writePath);
    }
}

var logManager = {
    logger: {},
    init: function(category) {
        createDir(path.join(process.cwd(), './logs'));
        log4js.configure({
            "appenders": [{
                "type": "dateFile", //按日期文件输出
                "filename": path.join(process.cwd(), './logs/webService'), //日志输出路径
                "maxLogSize": 50 * 1024 * 1024, //文件最大存储空间,当文件内容超过文件存储空间会自动生成一个文件test.log.1的序列自增长的文件
                "backups": 4, //default value = 5.当文件内容超过文件存储空间时,备份文件的数量
                "category": "webService", //日志类型,自定义
                "layout": {
                    "type": "pattern",
                    "pattern": "[%r] [%p] [%c] %m"//[时间] [日志级别] [category] [日志信息]
                },
                "alwaysIncludePattern": true,//(默认为false) - 将模式包含在当前日志文件的名称以及备份中
                "pattern": "-yyyy-MM-dd.log" //(可选,默认为.yyyy-MM-dd) - 用于确定何时滚动日志的模式。格式:.yyyy-MM-dd-hh:mm:ss.log
            }, {
                "type": "dateFile",
                "filename": path.join(process.cwd(), './logs/imageService'),
                "maxLogSize": 50 * 1024 * 1024,
                "backups": 4,
                "category": "imageService",
                "layout": {
                    "type": "pattern",
                    "pattern": "[%r] [%p] [%c] %m"//[时间] [日志级别] [category] [日志信息]
                },
                "alwaysIncludePattern": true,
                "pattern": "-yyyy-MM-dd.log"
            },{
                "type": "console" //只在控制台输出
            }]
        });
        this.logger[category] = log4js.getLogger(category);
        this.logger[category].setLevel(log_level);
    },
    getLogger: function(category) {
        if (!this.logger[category]) {
            this.init(category);
        }
        return this.logger[category];
    }
}

module.exports = logManager;

使用

const logManager = require('./logger') //上面配置文件的路径
const log = logManager.getLogger('webService') //日志类型
log.info('输出webService类型的日志')
上一篇 下一篇

猜你喜欢

热点阅读