中间件 捕获错误和日志输出

本文介绍如何使用Log4js实现响应时间记录及错误捕获的日志输出中间件,详细展示了配置过程与具体代码实现,适用于后端开发中对请求响应时间和错误处理进行监控的场景。

log中间件

const log4js = require('log4js');

const logjs = () => {
	return async (ctx,next) => {
		log4js.configure({
			appenders: { cheese: { type: 'file', filename: 'cheese.log' } },
			categories: { default: { appenders: ['cheese'], level: 'error' } }
		}); 
		const logger = log4js.getLogger('cheese');
		const firstTime = Date.now();	
		await next();
		const endtTime = Date.now();	
		const reduceTime = 	endtTime - firstTime;
		logger.fatal('响应时间' + reduceTime);
	}
}
module.exports = logjs;

错误捕获日志输出中间件

const log4js = require('log4js');
const logger = log4js.getLogger('cheese');

module.exports = (app) => {
  app.use(async (ctx,next)=>{
    try{
      await next();
      if(ctx.response.status === 404 && !ctx.response.body){
        ctx.throw(404);
      }
    }
    catch(e){
    // 捕获判断错误码
      let fileName;
      let status = parseInt(e.status);
      // const message = e.message;
      if(status >= 404){
        switch(status){
          case 400:
          case 500:
          case 404:
            fileName = status;
            break;
          default:
            fileName = 'other';					
        }
      }
      logger.error('页面错误'+fileName);
      ctx.body = fileName;
    }
  })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值