expresjs+log4js+pm2 记录API调用日志
API调用日志记录方案
- 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 } } });
- node-http-proxy代理API请求 使用ExpressJS作为服务端,使用node-http-proxy作为代理中间件. node-http-proxy提供了proxyRes事件监听来自后端的请求响应结果,但是http 响应式以数据流的形式,所以必须要把数据流全部接收完毕之后,才能对返回的请求结果进行分析和记录. ExpressJS提供了app.use(router)路由拦截方法,我们只要提供一个日志拦截路由即可.
- 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生成日志文件 }] }