您的位置:首页 > 其它

日志记录最佳实践

2015-06-03 17:39 267 查看
对于现在的应用程序来说,日志的重要性是不言而喻的。很难想象没有任何日志记录功能的应用程序运行在生产环境中。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题来源的重要依据。应用程序运行时的产生的各种信息,都应该通过日志 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最佳实践
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: