Node.js Log4js使用詳解
阿新 • • 發佈:2018-11-23
log4js-node是log4js的Node.js版本。
log4js-node的使用比較簡單,以下內容主要部分來自官方文件。
https://github.com/log4js-node/log4js-node
Installation
npm install log4js
Usage
注意:log4js預設category的level是OFF,所以以下程式不會有輸出。
var log4js = require('log4js');
var logger = log4js.getLogger();
logger.level = 'debug';
logger. debug("Some debug messages");
以下程式將default category的level改為error。
const log4js = require('log4js');
log4js.configure({
appenders: { cheese: { type: 'file', filename: 'cheese.log' } },
categories: { default: { appenders: ['cheese'], level: 'error' } }
});
const logger = log4js.getLogger('cheese' );
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Comté.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
成功輸出error以上級別的log。
[2010-01-17 11:43:37.987] [ERROR] cheese - Cheese is too ripe!
[2010-01-17 11:43:37.990] [FATAL] cheese - Cheese was breeding ground for listeria.
Example
https://github.com/log4js-node/log4js-example
1. log4js.configure()
configure可以接收一個JSON檔案(log4js.json)作為引數。
2. log4js.json
定義了3種category、4種appender。其中errors是logLevelFilter,輸出到errorFile,就是所有error資訊會單獨輸出到errors.log檔案中。
{
"appenders": {
"access": {
"type": "dateFile",
"filename": "log/access.log",
"pattern": "-yyyy-MM-dd",
"category": "http"
},
"app": {
"type": "file",
"filename": "log/app.log",
"maxLogSize": 10485760,
"numBackups": 3
},
"errorFile": {
"type": "file",
"filename": "log/errors.log"
},
"errors": {
"type": "logLevelFilter",
"level": "ERROR",
"appender": "errorFile"
}
},
"categories": {
"default": { "appenders": [ "app", "errors" ], "level": "DEBUG" },
"http": { "appenders": [ "access"], "level": "DEBUG" }
}
}
3. log4js呼叫
根據category決定輸出檔案,getLogger(‘http’)輸出到access.log,其他情況下輸出到app.log(因為category非http即default),error自動輸出到errors.log檔案。
var log4js = require('log4js');
var log = log4js.getLogger("app");
app.use(log4js.connectLogger(log4js.getLogger("http"), { level: 'auto' }));
log.error("Something went wrong:", err);
動態配置
1. 不同的log4js.json
因為log4js.configure支援json檔案作為引數,可以為Development和Production定義不同的配置檔案。
如配置檔案放在config目錄下,區分dev和prod。
config/dev/log4js.json
config/prod/log4js.json
2. 呼叫方法
根據ENV值選擇呼叫的配置檔案,即執行前set ENV=prod,default是dev。
let env = process.env.ENV || 'dev';
let logConfigPath = './config/' + env + '/log4js.json';
let logConfig = require(logConfigPath);
log4js.configure(logConfig);