请教一个关于日志的问题......
目前的情况:
项目中的日志输出,都是出了问题,才想起来加一两句输出日志的代码,然而这都是出了问题才这么干,开发阶段基本不考虑这个问题。开发阶段为了调试方便,会有很多的console.log(***)…然而这对于项目上线后的维护,尤其是处理业务方面的问题,个人感觉基本没用。
请教大神:在项目维护开发中,对于日志输出是怎么处理的?一般在那些地方会有输出?关于日志有什么 最佳实践的? 感谢大神。
6 回复
只说思路: 1 使用aop或者叫hook方式,统一记录日志 2 记录日志时,区分等级,比如debug和info warn error ,非生产环境,记录全部日志,生产只记录info及以上 随便什么日志库,一般都提供这些功能.
按1L说的,设置log level,开发完了线上环境只需要修改一下log level即可
- 一般的 web 项目,每个 请求,响应记录下来就好了。( body 长度要处理一下,否则上传整个文件你都记录下来就不好了,密码也要处理一下,不要记) (INFO 级别)
- 外部服务调用,请求响应记录。(INFO 级别)
- 所有的 SQL ,请求响应记录(这个一般作 DEBUG 级别,测试环境开,生产环境不开)
- 能处理的错误, catch 之后,记录尽可能详细的信息。 (ERROR 级别)
然后,对于你自己漏掉的东西,只要是出错的,如果你使用提现成的框架,这部分信息基本上都会打到“错误输出”中,你使用的进程管理工具会把这部分信息记录到指定文件的。
最后,日志记录下来之后,格式定好,随便找个现成的工具,部署一下,就可以作日志的汇总,搜索,与即时展示了。
使用log4js或者Winston这类日志库,可以设置日志输出等级,可以输出到文件,也可以不需要,直接使用pm2的日志功能:http://yuedun.wang/blogdetail/5a69a8301f395d7179259c45
下面这个是我基于log4js封装的http请求日志中间件: https://github.com/xiaozhongliu/node-api-seed/blob/master/midware/httplog.js
@yszou 您这个答案是我想要的,每个请求响应都记录会不会量太大了,,毕竟也是日pv十几万