当前位置: 首页 > 工具软件 > log4js > 使用案例 >

nodejs日志管理 log4js使用详解

轩辕越泽
2023-12-01

一、首先是在项目中安装 log4js
    npm install log4js --save

    注:log4js日志级别,分别为:<权值从小到大>

    all < trace < debug < info < warn < error < fatal < mark < off

二、基本使用:

1.//-----------同一文件,不同 level 日志输出-----------


var log4js = require('log4js');
log4js.configure({
    appenders: {
        out: { type: 'console' },     //控制台输出
        app: {
            type: "dateFile",
            filename: 'logs/log.log',
            pattern: "-yyyy-MM-dd",
            alwaysIncludePattern: false,
        }
    },
    categories: {
        default: { appenders: ['out'], level: 'info' },
        logFile: { appenders: ['out', 'app'], level: 'ALL' },
    },
    replaceConsole: true,       //替换console.log
});

var fileLog = log4js.getLogger('logFile');

fileLog.trace('111111');
fileLog.debug('222222');
fileLog.info('333333');
fileLog.warn('444444');
fileLog.error('555555');
fileLog.fatal('666666');

exports.logger = fileLog;
exports.use = function (app) {
    //页面请求的日志
    app.use(log4js.connectLogger(fileLog));
}

console.log("--------结束");


2.//---------多个文件,不同 level  日志输出----------

var log4js = require('log4js');
log4js.configure({
    replaceConsole: true,
    appenders: {
        out: { type: 'console' },                          //控制台输出
        debug: {//debug日志
            type: 'dateFile',
            filename: 'logs/debug_logs/deb',       // 首先手动建好目录,写入日志文件的路径
            //maxLogSize: 1024,                        // 只在 type: 'file' 中才支持
            // 指定pattern后无限备份,pattern精确到ss(秒)就是一秒一个文件,精确到mm(分)就是一分一个文件,hh(小时),dd(天),MM(月),yyyy(年)
            pattern: 'yyyy-MM-dd.log',                    
            encoding: 'utf-8',                               //文件的编码
            alwaysIncludePattern: true               // 不指定pattern时若为true会使用 默认值'.yyyy-MM-dd'
            
            daysToKeep:10,//时间文件 保存多少天,以前的log将被删除
            //compress : true,//(默认为false) - 在滚动期间压缩备份文件(备份文件将具有.gz扩展名)
        },
        err: {  //err日志
            type: 'dateFile',
            filename: 'logs/error_logs/err',
            pattern: 'yyyy-MM-dd.log',
            alwaysIncludePattern: true
        },
        info: {  //info日志
            type: 'dateFile',
            filename: 'logs/info_logs/info',
            pattern: 'yyyy-MM-dd.log',
            alwaysIncludePattern: true
        },
        fatal: {  //fatal日志
            type: 'dateFile',
            filename: 'logs/fatal_logs/ftl',
            pattern: 'yyyy-MM-dd.log',
            alwaysIncludePattern: true
        }
    },
    categories: {
        //appenders:采用的appender,取appenders项,level:设置级别
        default: { appenders: ['out', 'debug'], level: 'debug' },
        err: { appenders: ['out', 'err'], level: 'error' },
        info: { appenders: ['out', 'info'], level: 'info' },
        fatal: { appenders: ['out', 'fatal'], level: 'fatal' },
    }
})

//debug日志
var debugLog = log4js.getLogger('debug');
debugLog.info('~~111~~debug log~~111~~');

//info日志
var infoLog = log4js.getLogger('info');
infoLog.info('~~222~~info log~~222~~');

//err日志
var errorLog = log4js.getLogger('err');
errorLog.error('~~333~~err log~~333~~');

//fatal日志
var fatalLog = log4js.getLogger('fatal');
fatalLog.fatal('~~444~~fatal log~~444~~');

console.log("--------结束");

 

 类似资料: