日志最佳实践
编辑
555
2022-12-12
文章链接:My Logging Best Practices
在动作后打日志
// don't do that
log.info("Making request to REST API")
restClient.makeRequest()
// do that
restClient.makeRequest()
log.info("Made request to REST API")
第一个例子是一个反例,这种日志不知道下面的方法执行了没有。第二个例子在方法出错时会抛出异常,同时日志也不会打印。
分离参数和日志信息
// don't do that
restClient.makeRequest()
log.info("Made request to {} on REST API.", url)
// do that
restClient.makeRequest()
log.info("Made request to REST API. [url={}]", url)
日志中有两种信息,一种是人工写的帮助判断状态的信息,另一种是实际操作中的参数。第一个例子中,参数过长会让日志信息可读性降低,同时添加参数需要重写句子。第二种方式能使得日志结构清晰更好解析,可读性高,同时也更好扩展参数列表。
区别 WARNING 和 ERROR
简单来说,两者的区别为:
- WARNING:做了某些操作,但是有问题
- ERROR:没有进行操作
需要注意的是,WARNING 和 ERROR 在无需处理的时候,不应该记录。
业务使用 INFO,技术使用 DEBUG
DEBUG | Saved user to newsletter list. [user="Thomas", email="thomas@tuhrig.de"]
DEBUG | Send welcome mail. [user="Thomas", email="thomas@tuhrig.de"]
INFO | User registered for newsletter. [user="Thomas", email="thomas@tuhrig.de"]
DEBUG | Started cron job to send newsletter of the day. [subscribers=24332]
INFO | Newsletter send to user. [user="Thomas"]
INFO | User unsubscribed from newsletter. [user="Thomas", email="thomas@tuhrig.de"]
简单来说,INFO 记录做了什么,但不关心具体怎么做的;技术有关的内容使用 DEBUG 记录。
这是阿猫精读技术文章的第1篇,本系列会不定期更新,主要内容为技术文章精读(翻译),同时发布在
竹白:猫兄的和谐号列车
博客:阿猫的博客-技术文章精读
- 0
- 0
-
赞助
微信赞赏码 -
分享