日志记录最佳实践

系统 1447 0

对于现在的应用程序来说,日志的重要性是不言而喻的。很难想象没有任何日志记录功能的应用程序运行在生产环境中。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题来源的重要依据。应用程序运行时的产生的各种信息,都应该通过日志 API 来进行记录。

我们要记录什么?
  • 完成某项操作所需的时间   

通过它可以跟踪为什么系统响应变慢或者太快

    • 处理完一个请求所耗费的时间,精确到毫秒
    • 执行数据库查询的时间
    • 从磁盘或者存储介质获取数据的时间
    • 等等
  • 异常和堆栈跟踪
  • Sessions

知道一个问题是由谁引起的非常重要,因此在日志中使用会话标识符就变得必不可少。它可以简单到是一个 IP 地址或者是一个更复杂的 UUID,只要能区分不同的请求者就足够。

  • 版本号
 
使用的最佳实践
  • 使用第三方类库

从发展方向上看,应该选择slf4j和logback。 当根据网上的测试,还是log4j比较性能比较好。

  • 检查日志是否可以被记录
       if (LOGGER.isDebugEnabled()) { 

    LOGGER.debug("This is a message."); 

 }
    
  • 在适当的级别进行log
    • FATAL:导致程序提前结束的严重错误。
    • ERROR:运行时异常以及预期之外的错误。
    • WARN:预期之外的运行时状况,不一定是错误的情况。
    • INFO:运行时产生的事件。
    • DEBUG:与程序运行时的流程相关的详细信息。
    • TRACE:更加具体的详细信息。
  • 谨慎修改配置文件
  • 第三方包的信息

自然是配角,不要显示大量的第三方包中的debug信息。只显示warning以上信息。

  • 日志包括线程和时间戳信息。

方便多线程下的调试。

  • 日志包含上下文信息。

系统出错时,各个参数的信息,操作人员的信息。

  • 日志包含充分的信息

比如不应该为null的为null了;某个范围的设置值超出范围。

  • 你应该用机器可以解析的格式记录日志

利用使用其他工具进行分析。

  • 不同业务领域使用不同的日志

比如系统登录日志,邮件发送日志,订单建立日志等等。

 

参考

Java开源日志框架大比拼

写给开发者:记录日志的10个建议

Java 日志管理最佳实践

55最佳实践系列:Logging最佳实践

日志记录最佳实践


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论