应用系统日志打印规范实践之道.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

如果你是一名优秀的应用系统开发人员,想必应该非常清楚在应用系统运行期间,打印日志有多么重要。它不但能够记录应用系统运行情况及轨迹,还有助于提升故障排查及定位问题的效率,甚至还可以对其进行分析及监控,洞察系统隐患,提前预警防范。

但并不是说只要打印尽可能多的日志,就能轻松获得这些能力。设想一下,如果你肆无忌惮地打印了一堆毫无价值的日志,那请问日志又何以能够来为你提供价值呢。由此可见,这里的核心关键点并不在于日志的多少,而在于日志打印是否规范且合理。

不规范合理的日志,不但无法发挥作用产生价值,还会增加故障定位难度、降低解决效率,以及额外增加日志存储成本,消耗应用系统性能。在极端情况下,甚至还会对应用系统造成致命性打击,引发应用系统瘫痪的可能。

讲到这,我想你应该明白我想说的——应用系统日志打印确实非常重要,但日志打印规范将更为重要,它就像一把双刃剑,只有合理运用才能发挥其特有的作用及价值。

但在组织中,如果你想让你周围的人都能明白这个道理可并不容易,它需要一个漫长的传播过程,而在这个过程中,你不仅需要坚持不断地宣导来逐步增强他们的认知,还应借助必要的治理手段及工具平台进行辅助,只有利其所器,才能善其所事。

利器一:规范先行

在你想启动规范化日志打印前,建议先制定一份日志打印规范,它可能无法面面俱到,但没有关系,它的目的仅是为了先突显日志打印规范的重要性,并且让这件事情能够正式进入正轨。

如果组织中大部分都是Java应用,那么规范内容可以主要围绕Java应用来写,虽然无法覆盖所有开发语言,但其核心原则仍是可以借鉴的。另外,前期请务必不要将其复杂化,否则它将无法具备普适性,也无法被接受和传播。

Java应用系统日志打印规范

Java日志框架:

常用的Java日志框架可选择Log4j/Logback/Log4j2等,但为了避免后续更换日志框架所带来的额外改造成本,建议将接口层和实现层进行分离,将SLF4J作为接口层,将Log4j/Logback/Log4j2作为实现层,两者通过桥接的方式进行集成。

Java日志规范:

规范一:?【强制】级别只允许使用ERROR、WARN、INFO、DEBUG,定义如下:

级别

定义

ERROR

表示应用系统出现异常或故障,需要预警并及时解决,否则该功能将无法正常运行并提供服务能力。

WARN

表示应用系统出现不符合预期的现象,但服务并未受损,可根据实际情况选择性预警,解决时效要求不高,但需要额外关注。

INFO

表示用于记录系统运行过程或重要信息点,主要为故障定位、过程追溯、数据分析等提供辅助能力。

DEBUG

表示用于在测试或本地的非生产环境中使用,主要为了方便开发调试程序,而在生产环境中禁止使用。

规范二:?【强制】禁止使用Logback/Log4j2等的API,应使用SLF4J的API。

规范三:?【强制】在接口/方法的入口/出口处,打印请求及响应参数日志。

规范四:?【强制】ERROR级别日志需打印堆栈,而非ERROR级别日志则不需要。

规范五:?【强制】禁止在代码循环体中直接打印非DEBUG级别的日志。

规范六:?【强制】禁止日志打印内容中仅打印特殊字符或数字的情况。

规范七:?【建议】日志内容中应包含关键特征类信息,例如:用户标识或流水号。

规范八:?【建议】应采用异步打印模式,且打印时建议关闭打印位置信息。

规范九:?【建议】日志打印若出现堵塞,建议至少丢弃INFO级别以上的日志。

规范十:?【建议】每条日志在语义上可独立被理解,减少上下文关联理解。

Java日志字段:

注:位置信息包括类(class)/文件(file)/行号(line)/方法(method),若打印位置信息,则对性能有所影响。

以上仅是一些规范参考,你可以根据组织中的实际情况来进行调整,但规范仅仅只是规范,有了它并不代表你已达成目标,只能说明你已为日志打印规范化这件事,迈出了第一步。

利器二:服务至上

当制定完应用系统日志打印规范后,请不要幻想有任何人会来自觉地遵守它,一是不知它的存在,二是他们无从下手,三是大家都挺“忙”的。我把它总结为六字真言,分别是“不知”、“不会”、“不想”。

我曾见过组织中的有些规范,特别是技术规范,在制定完成后就会被长久地封存起来,没有人知道,也没有人想知道。所以,要落实好规范,你还得构思一套战术才行。否则,那些无法落实的规范就和废纸毫无两样。

在很多人眼里,可能会将规范视为是一种约束,而又错误地将约束理解为贬义词,从而避而远之。这种误解的发生,其原因并不出在他们本身,而更多的出在那些制定规范的人身上。

有些规范制定者不但没有身在其中,甚至也没有去诠释规范所能带来的价值,而仅仅只是强行推行那份冷冰冰的规范,请问此时谁会乐意在不知其所以然的情况下,无缘无故地背上这沉重的“负担”。

因此,

文档评论(0)

外卖人-小何 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档