日志规范笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 日志规范笔记

日志规范笔记

日志级别

日志是有级别的。针对不同的场景,日志被分为五种不同的级别, 按照重要程度由低到高排序


  • DEBUG: 级别曰志记录对调试程序有帮助的信息。
  • INFO: 级别日志用来记录程序运行现场,虽然此处并未发生错误,但是对排查其他错误具有指导意义。
  • WARN: 级别日志也可以用来记录程序运行现场,但是更偏向于表明此处有出现潜在错误的可能。
  • ERROR: 级别日志表明当前程序运行发生了错误,需要被关注。但是当前发生的错误,没有影响系统的继续运行。
  • FATAL: 级别曰志表明当前程序运行出现了严重的错误事件,并且将会导致应用程序中断。


可以看出,以上不同级别的日志优先级和重要性不同,因此在打印日志时针对不同的日志级别要有不同的处理方式。


日志处理方式

预先判断日志级别


对 DEBUG 、INFO 级别的日志,必须使用条件输出或者使用占位待的方式打印。该约定综合考虑了程序的运行效率和日志打印需求。

// 使用条件判断形式 & 使用占位符形式
if(logger.isDebugEnabled()){
  logger.debug("the error is {}", e.getMessage())
}


避免无效日志打印


生产环境禁止输出 DEBUG 曰志且有选择地输出使用 INFO日志。


使用 INFO、WARN 级别来记录业务行为信息时,一定要控制日志输出量,以免磁盘空间不足。同时要为曰志文件设置合理的生命周期, 及时清理过期的日志。


避免重复打印,务必在日志配置文件中设置 additivity=false ,示例如下

<logger name= "com.taobao" additivity=” false" >


区别对待错误日志


WARN 、ERROR 都是与错误有关的日志级别,但不要一发生错误就笼统地输出 ERROR 级别日志。一些业务异常是可以通过引导重试就能恢复正常的, 例如用户输入参数错误。在这种情况下,记录日志是为了在用户咨询时可以还原现场, 如果输出为 ERROR 级别就表示一旦出现就需要人为介入, 这显然不合理。所以, ERROR 级别只记录系统逻辑错误、异常或者违反重要的业务规则, 其他错误都可以归为 WARN 级别。

保证记录内容完整


曰志记录的内容包括现场上下文信息与异常堆栈信息, 所以打印时需要注意以下两点:


  1. 记录异常时定要输出异常堆栈, 例如 logger.error(“error is {}”, e.getMessage(), e);
  2. 曰志中如果输出对象实例,要确保实例类重写 toString 方法,否则只会输出对象的 hashCode 值, 没有实际意义。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 监控 Cloud Native
|
8月前
|
Java 测试技术 Docker
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
329 0
|
2天前
|
XML 机器学习/深度学习 移动开发
技术笔记:log4net使用详解
技术笔记:log4net使用详解
|
9天前
|
存储 监控 Java
惊讶!我定的日志规范被CTO在全公司推广了
惊讶!我定的日志规范被CTO在全公司推广了
|
10天前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
|
1月前
|
运维 监控 Java
实战总结|系统日志规范及最佳实践
打印日志是一门艺术,日志信息是开发人员排查线上问题最主要的手段之一,但规范打日志被开发同学经常所忽视。日志就像保险,平时正常的时候用不上,但是一旦出问题就都想看有没有保险可以用。一条良好的日志,是我们向外部证明的材料。
160 0
|
7月前
|
JSON 运维 安全
系统日志规范及最佳实践(2)
系统日志规范及最佳实践
155 0
系统日志规范及最佳实践(2)
|
7月前
|
运维 安全
TStack运维笔记(12)- 日志管理
TStack运维笔记(12)- 日志管理
61 0
|
7月前
|
运维 监控 安全
系统日志规范及最佳实践(1)
系统日志规范及最佳实践
614 0