pm2中自带的日志内容是不能满足日常的需求的,因此需要在项目中加上日志管理,这里研究了下log4的使用方法,效果挺好的,想要查看的都可以找到,记录下简单的使用步骤
<强> log4的配合强>
//config.js 让道路=要求(“路径”);//日志根目录 让baseLogPath=路径。解决(__dirname“. ./. ./. ./日志”);//请求日志目录 让reqPath=/请求的;//请求日志文件名 让reqFileName=扒肭蟆?//请求日志输出完整路径 让reqLogPath=baseLogPath + reqPath +‘/? reqFileName;//响应日志目录 让resPath=/响应的;//响应日志文件名 让resFileName=跋煊Α?//响应日志输出完整路径 让resLogPath=baseLogPath + resPath +‘/? resFileName;//错误日志目录 让errPath=/错误的;//错误日志文件名 让errFileName=按砦蟆?//错误日志输出完整路径 让errLogPath=baseLogPath + errPath +‘/? errFileName; 模块。出口={ 输出源:{//所有的日志 “控制台”:{类型:“控制台”},//请求日志 “reqLogger”: { 类型:' dateFile ',//日志类型 文件名:reqLogPath,//输出文件名 模式:“-yyyy-MM-dd-hh。日志',//后缀 alwaysIncludePattern:真的,//上面两个参数是否合并 编码:“utf - 8”,//编码格式 maxLogSize: 1000//最大存储内容 },//响应日志 “resLogger”: { 类型:“dateFile”, 文件名:resLogPath, 模式:“-yyyy-MM-dd-hh.log”, alwaysIncludePattern:没错, 编码:“utf - 8”, maxLogSize: 1000, },//错误日志 “errLogger”: { 类型:“dateFile”, 文件名:errLogPath, 模式:“-yyyy-MM-dd-hh.log”, alwaysIncludePattern:没错, 编码:“utf - 8”, maxLogSize: 1000, } },//分类以及日志等级 类别:{ 默认值:{ 输出源:“控制台”, 级别:“所有” }, reqLogger: { 输出源:[' reqLogger '), 级别:“信息” }, resLogger: { 输出源:[' resLogger '), 级别:“信息” }, errLogger: { 输出源:[' errLogger '), 级别:“错误” } }, } >之前<强> log4的日志封装强>
这里是把log4封装成一个中间件,在应用程序。js中直接调用就可以了
//先安装log4j//log4.js const log4Config=要求(/配置。) const log4j=要求(log4j)//调用配置文件 log4js.configure (log4Config) 类CommonHandle { 构造函数(){}//格式化请求日志 静态formatReqLog (ctx) { 让文本=' - - - - - - - - - - - -请求开始- - - - - - - - - - - -” 让方法=ctx.method 文本+='请求方法:${方法}\ n请求url: $ {ctx。originalUrl} \ n” 如果(方法=暗玫健?{ 文本+=的请求数据:$ {JSON.stringify (ctx.query)} \ n” 其他}{ 文本+=的请求数据:$ {JSON.stringify (ctx.body)} \ n” } 文本+=' ctx: $ {JSON.stringify (ctx)}” 返回文本 }//格式化相应日志 静态formatResLog (ctx) { 让文本=' - - - - - - - - - - - -反应开始- - - - - - - - - - - -” 文本+=的反应结果:$ {JSON.stringify (ctx.response.body)} \ n” 文本+=的反应:$ {JSON.stringify (ctx)} \ n” 文本+=的响应时间:${时间}\ n ' 返回文本 }//格式化错误日志 静态formatErrorLog (ctx、错误、时间){ 让文本=' - - - - - - - - - - - -错误的开始- - - - - - - - - - - -” 文本+=this.formatResLog (ctx、时间) 文本+='错误内容:$ {JSON.stringify(错误)}” 返回文本 } } 类HandleLogger延伸CommonHandle { 构造函数(){ super () }//请求日志 静态reqLogger (ctx) { log4js.getLogger (' reqLogger ') . info (this.formatReqLog (ctx)) }//相应日志 静态resLogger (ctx) { log4js.getLogger (' resLogger ') . info (this.formatResLog (ctx、时间)) }//错误日志 静态errorLogger (ctx、错误、时间){ log4js.getLogger (' errLogger ') . info (this.formatErrorLog (ctx、错误、时间)) } } 模块。出口=(选项)=比;{ 下一个返回异步(ctx)=比;{ const开始时间=新的日期() 让时间; 尝试{//请求日志 HandleLogger.reqLogger (ctx) 等待下一个() 时间=new()——开始时间日期//响应日志 HandleLogger.resLogger (ctx) }捕捉(err) { 时间=new()——开始时间日期//错误日志 HandleLogger。errorLogger (ctx、犯错、周期) } } }如何在项目中使用log4.js的方法步骤