日志记录最佳实践

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

转载于:https://www.cnblogs.com/liyanning/p/3595450.html

猜你喜欢

转载自blog.csdn.net/weixin_34151004/article/details/93693937