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生成日志文件
}]
}
