expresjs+log4js+pm2 记录API调用日志

API调用日志记录方案

  1. log4js log4js提供了完整的JavaScript日志记录方案,要将日志存储到文件中,需要修改log4js的默认配置.
var logger = require(log4js);
  // log4js 配置
  logger.configure({
          
   
    pm2: true, // 结合pm2日志输出
    pm2InstanceVar: www, // pm2 启动脚本入口
    disableClustering: true, // pm2集群模式时,log4js不打印日志,禁用集群模式
    replaceConsole: true,
    level: WARN,
    appenders: {
          
   
      app: {
          
   
        type: "file", //配置日志输出到文件中
        filename: ../logs/app.log // 日志输出文件路径
      }
    },
    categories: {
          
   
      default: {
          
   
        appenders: ["app"],
        level: WARN
      }
    }
  });
  1. node-http-proxy代理API请求 使用ExpressJS作为服务端,使用node-http-proxy作为代理中间件. node-http-proxy提供了proxyRes事件监听来自后端的请求响应结果,但是http 响应式以数据流的形式,所以必须要把数据流全部接收完毕之后,才能对返回的请求结果进行分析和记录. ExpressJS提供了app.use(router)路由拦截方法,我们只要提供一个日志拦截路由即可.
  1. PM2 日志管理 首先,启用PM2的ecosystem配置文件。
pm2 ecosystem

ecosystem.config.js

module.exports = {
          
   
  apps : [{
          
   
    name: "app",
    script: "./www",
    env: {
          
   
      NODE_ENV: "development",
    },
    env_production: {
          
   
      NODE_ENV: "production",
	},
	error_file:’../logs/error.log’, // 错误日志
	out_file:’../logs/out.log’, // 输出日志
	combine_logs:true // 启动多个实例时,合并日志文件,不按照实例id生成日志文件
  }]
}
经验分享 程序员 微信小程序 职场和发展