使用nodeJs koa2框架開發後端應用,使用koa-log4中間件管理nodeJs訪問日誌、系統日誌。
一、安裝koa-log4
因爲項目使用了koa2,所以安裝的高版本的log4,
$ npm i --save koa-log4@2
如果使用koa1,請使用指令
$ npm i --save koa-log4@1
二、新建log4.js文件來配置log4
const path = require('path');//引入原生path模塊
const log4js = require('koa-log4');//引入koa-log4
log4js.configure({
appenders: {
//訪問日誌
access: {
type: 'dateFile',
pattern: '-yyyy-MM-dd.log', //通過日期來生成文件
alwaysIncludePattern: true, //文件名始終以日期區分
encoding:"utf-8",
filename: path.join('logs/', 'access.log') //生成文件路徑和文件名
},
//系統日誌
application: {
type: 'dateFile',
pattern: '-yyyy-MM-dd.log', //通過日期來生成文件
alwaysIncludePattern: true, //文件名始終以日期區分
encoding:"utf-8",
filename: path.join('logs/', 'application.log') //生成文件路徑和文件名
},
out: {
type: 'console'
}
},
categories: {
default: { appenders: [ 'out' ], level: 'info' },
access: { appenders: [ 'access' ], level: 'info' },
application: { appenders: [ 'application' ], level: 'WARN'}
}
});
exports.accessLogger = () => log4js.koaLogger(log4js.getLogger('access')); //記錄所有訪問級別的日誌
exports.logger = log4js.getLogger('application'); //記錄所有應用級別的日誌
三、如果使用日誌
- 訪問日誌--記錄用戶所有訪問請求,以中間件的形式在koa入口使用即可
const Koa = require('koa');
const app = new Koa();
const { accessLogger,systemLogger, } = require('./logger');
const router = new KoaRouter();
app.use(accessLogger()); //中間件
-
系統日誌--記錄系統狀態的error
app.on('error', err => {logger.error(err); });
四、效果