项目中根据不同的情况使用不同的日志等级,便于管理和配置对应的日志报警通知进行处理.
- emergency: 系统不可用
- alert: 必须 立刻采取行动.
例如:在整个网站都垮掉了、数据库不可用了或者其他的情况下, 应该 发送一条警报短信把你叫醒。 - critical: 紧急情况
例如:程序组件不可用或者出现非预期的异常。 - error: 运行时出现的错误,不需要立刻采取行动,但必须记录下来以备检测。
- warning: 出现非错误性的异常。
例如:使用了被弃用的API、错误地使用了API或者非预想的不必要错误。 - notice: 一般性重要的事件。
例如: 第三方店铺id未配置,通知. - info: 重要事件.
例如:用户登录和SQL记录。 - debug: debug 详情.
目前我所在项目的约定,用到四种日志:
- debug日志只有调试的时候用,用完要删除或者注释。也就是说提交代码的时候不能存在debug日志的输出。因为debug开发时使用的比较随意,可能在经常执行到的代码打印debug日志,所以当使用完不注释掉或者删除的话,会影响其他人调试。
为什么一定要去掉?一些不常执行到的逻辑为什么不能保留呢?因为有个经常执行的逻辑存在debug日志时,会全局搜索debug日志的代码来注释它,按照约定,此时查到的没有注释或者删除的debug日志都可以处理掉。 - 如果有特定逻辑下调试的信息需要保留,使用info级别的日志。
- error级别的日志会触发短信报警通知,warning一般打印当发生error时需要收集的更详细的错误信息或者单纯的打印生产环境需要稳定记录的日志。
如:
3.1 error日志会在系统发生500错误时记录,同时warning会打印更详细的日志信息。
3.2 系统有一个逻辑不常执行到,当执行到的时候需要收集更多的日志来回看,使用warning打印。也可以使用info。 - 生产环境默认的日志级别是warning,如果有问题需要收集更多的日志可以临时改成info来收集,一般不会用到。