使用nodeJs koa2框架開發後端應用,使用koa-log4中間件管理nodeJs訪問日誌、系統日誌。
由於項目使用了koa2,因此安裝的高版本的log4,node
$ npm i --save koa-log4@2
若是使用koa1,請使用指令npm
$ npm i --save koa-log4@1
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. systemLogger = log4js.getLogger('application'); //記錄全部應用級別的日誌
const Koa = require('koa'); const app = new Koa(); const { accessLogger,systemLogger, } = require('./logger'); const router = new KoaRouter(); app.use(accessLogger()); //中間件
系統日誌--記錄系統狀態的errorapp
app.on('error', err => {logger.error(err); });