美文网首页
日志输出之 log4js

日志输出之 log4js

作者: Kelly_zj | 来源:发表于2020-11-30 17:55 被阅读0次

    简介

    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类型的日志')
    

    相关文章

      网友评论

          本文标题:日志输出之 log4js

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