课程名称:Vue3+ElementPlus+Koa2 全栈开发后台系统
课程章节: 第3章 Koa架构设计
主讲老师:河畔一角
课程内容:
今天学习的内容包括:封装 log4js 日志模块。
课程收获:
什么是日志:
日志用来记录程序的运行信息。开发服务端程序,必须集成日志管理的功能,一旦系统出现故障可以及时排查问题所在。
Koa.js 官方的日志插件是 koa-logger,功能比较简单,只能打印一些请求的信息,不能满足真实场景的需求。所以课程使用 Log4js作为日志插件。
Log4js 是一个优秀的日志插件,常用的功能包括按级别输出不同的日志信息,保存日志为文件等。
使用 log4js:
安装:
npm install log4js
配置:
新建 log4js 的配置文件, utils/log4js.js:
/**
* log4js 配置文件
*/
const log4js = require('log4js')
const levels = {
'trace':log4js.levels.TRACE,
'debug':log4js.levels.DEBUG,
'info':log4js.levels.INFO,
'warn':log4js.levels.WARN,
'error':log4js.levels.ERROR,
'fatal':log4js.levels.FATAL,
}
log4js.configure({
appenders:{
console:{ type:'console' },
info:{
type: 'file',
filename: 'logs/all-logs.log'
},
error:{
type: 'dateFile',
filename:'logs/log',
pattern:'yyyy-MM-dd.log',
alwaysIncludePattern:true// 设置文件名称为 filename + pattern
}
},
categories:{
default:{ appenders: [ 'console' ], level: 'debug' },
info:{
appenders: [ 'info','console' ],
level: 'info'
},
error:{
appenders: [ 'error','console' ],
level: 'error'
}
}
})
/**
* 日志输出,level为debug
* @param {string} content
*/
exports.debug = (content)=>{
let logger = log4js.getLogger();
logger.level = levels.debug;
logger.debug(content);
}
/**
* 日志输出,level为info
* @param {string} content
*/
exports.info = (content)=>{
let logger = log4js.getLogger('info');
logger.level = levels.info;
logger.info(content);
}
/**
* 日志输出,level为error
* @param {string} content
*/
exports.error = (content)=>{
let logger = log4js.getLogger('error');
logger.level = levels.error;
logger.error(content);
}
在应用中使用 log4js 插件:
const log4js = require('./utils/log4js')
// logger
app.use(async (ctx, next) => {
log4js.info(`${ctx.method} ${ctx.url}`)
await next()
})
// error-handling
app.on('error', (err, ctx) => {
log4js.error(`${err.stack}`)
});