egg-accesslog-extend
插件说明
在某些情况下,需要在应用服务器上记录访问日志,方便统计PV和定位错误。本插件既可以记录基础访问日志,也可以记录一次请求中访问的第三方服务日志。通过基础日志和自定义的第三方访问日志可以方便定位错误和统计接口中的时间消耗。
Install
$ npm i egg-accesslog-extend --save
Usage
// {app_root}/config/plugin.jsexportsaccessLog = enable: true package: 'egg-accesslog-extend';
Configuration
// {app_root}/config/config.default.js/** * egg-accesslog-extend default config * @member Config#accessLog * @property * @property * @property * 增加指定类型的访问日志,同一个类型可以增加多条 type日志类型,startTime开始时间(毫秒),logStr日志内容,status状态码 * @property * @property * @property * @property * @property * */exportsaccessLog = enable: true debug: false custom: true logFolder: 'access' logName: 'accesslog-extend' /** * 自定义基础日志格式 * @param * * * * * * * * * * * * * * * * * @param * * @return */ format: undefined /** * 生成用户id(如果应用在其他地方已经给ctx.userId赋值,则优先级最高) * 优先级: ctx.userId > genUserId > 默认获取userId方式 * * @param * * @return */ genUserId: undefined /** * 生成追踪对象(egg-tracer插件的优先级高于这个函数) * 优先级: egg-tracer插件 > genTracer > 默认tracer * * @param * * @return */ genTracer: undefined;
accessLog日志默认保存的路径logger.dir,如果没有配置logger.dir则保存到appInfo.root/logs目录中。
默认日志输出格式
// 基础访问日志 '2019-11-20 13:31:28,349,127.0.0.1,-,78103-1574227888328-0,[21ms POST /homepage http/1.1 200 39 - node-superagent/3.8.3]' // 基础访问日志+第三方访问日志 '2019-11-20 13:31:28,349,127.0.0.1,-,78103-1574227888328-0,[21ms POST /homepage http/1.1 200 39 - node-superagent/3.8.3],[curl 3717ms 2 sync|2249ms 200 https://github.com|1468ms 200 https://github.com]'
see config/config.default.js for more detail.
Example
自定义日志相关函数
exportsaccessLog = // 自定义基础日志格式 { return ` [] " / "`; } // 自定义获得用户id方法 { // 假设用户id是通过query参数传入的 return ctxqueryuserid; } // 自定义追踪对象 { return traceId: `--` ; } // 自定义日志输出格式 '127.0.0.1 123 0-1574227792001-77873 [2019-11-20 13:29:55,727] "GET /?userid=123 http/1.1 200 17 - node-superagent/3.8.3"'
访问第三方服务的日志
追加第三方服务日志函数原型
/** * 增加访问第三方服务日志 * * @param * @param * @param * @param * *@return */ ;
追加第三方日志函数的使用
// 例如在service的某个访问redis的方法中可以调用addAccessLog记录redis访问信息 const start = Date; const ret = appredis; ctx; // 记录访问第三方http接口日志 const start = Date; const result = await ctx; ctx;
see test/fixtures/apps/accesslog-extend-test for more detail.
Questions & Suggestions
Please open an issue here.