如何写日志?日志级别如何选择?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何写日志?日志级别如何选择?相关的知识,希望对你有一定的参考价值。

参考技术A

实际开发中常常遇到很多开发人员不知道如何输出日志,在此总结了阿里的日志规范和项目中的一些经验总结,希望能帮助大家更好的书写日志。

应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J 中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

对trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方式。
说明:logger.debug("Processing trade with id: " + id + " symbol: " + symbol);如果日志级别是warn,上述日志不会打印,但是会执行字符串拼接操作,如果symbol 是对象,会执行toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印。

避免重复打印日志,浪费磁盘空间,务必在xml 中设置 additivity=false
异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么往上抛。

【推荐】可以使用warn 日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。注意日志输出的级别,error 级别只记录系统逻辑出错、异常等重要的错误信息。如非必要,请不要在此场景打出 error 级别。

【推荐】谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志;如果使用 warn 来记录刚上线时的业务行为信息,一定要注意日志输出量的问题,避免把服务器磁盘撑爆,并记得及时删除这些观察日志。

说明:大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点。记录日志时请

DEBUG级别的日志应该是能帮助开发人员分析定位bug所在的位置。

INFO级别的日志应该是能帮助测试人员判断这是否是一个真正的bug,而不是自己操作失误造成的。

WARN级别称之为“警告”,告警日志,可以选择忽略也可以选择重视。

ERROR级别称之为“错误”,这个含义就更明显了,就是系统出现了错误,需要处理。最为常见的就是捕获异常时所打印的日志,通常需要正确区分异常类型。

应用系统批量日志指批量流程中由应用记录的批量任务相关信息,可供事件处理系统采集分析。

批量日志中至少应包含但不限于如下内容:

批量日志应记录在系统的单独文件中。批量日志在每日/次批量开始时新建,不宜采用追加方式,以方便快速检索查询。批量日志文件命名格式原则上各应用系统应保持一致,应包含系统标识、执行日期、批次等唯一性信息,避免日志文件相互覆盖。

应用系统的批量日志信息应具有标准的结构,每条日志信息应使用结构化描述:

以上是关于如何写日志?日志级别如何选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何log4j的日志级别改成debug

日志级别的选择:DebugInfoWarnError还是Fatal

如何使用 uber-go/zap 根据日志级别记录到标准输出或标准错误?

如何使用 go.uber.org/zap lib 以不同的日志级别打印不同的颜色,并根据日志级别将日志附加到不同的文件?

如何修改windows tomcat日志级别

如何设置日志记录级别名称?