java框架-日志-体系与级别-技巧

 体系

一是提供了统一的日志门面 API,即图中紫色部分,实现了中立的日志记录 API。

二是桥接功能,即图中蓝色部分,用来把各种日志框架的 API(图中绿色部分)桥接到SLF4J API。这样一来,即便你的程序中使用了各种日志 API 记录日志,最终都可以桥接到 SLF4J 门面 API。

三是适配功能,即图中红色部分,可以实现 SLF4J API 和实际日志框架(图中灰色部分)的绑定。SLF4J 只是日志标准,我们还是需要一个实际的日志框架。日志框架本身没有实现 SLF4J API,所以需要有一个前置转换。Logback 就是按照 SLF4J API 标准实现的,因此不需要绑定模块做转换。

需要理清楚的是,虽然我们可以使用 log4j-over-slf4j 来实现 Log4j 桥接到 SLF4J,也可以使用 slf4j-log4j12 实现 SLF4J 适配到 Log4j,也把它们画到了一列,但是它不能同时使用它们,否则就会产生死循环。jcl 和 jul 也是同样的道理。

级别

1. 要注意工程中配置的优先级,因为会忽略掉低优先级的日志

2. 定义

  1. ALL 最低等级的,用于打开所有日志记录。
  2. TRACE 很低的日志级别,一般不会使用。
  3. DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
  4. INFO 消息在粗粒度级别上突出强调应用程序的运行过程。这个可以用于生产环境中输出程序运行的一些重要信息。
  5. WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给开发者的一些提示。
  6. ERROR 指出发生错误的信息,可能会导致系统出错或是宕机等,必须要避免
  7. FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
  8. OFF 最高等级,用于关闭所有日志记录。

3. 使用

  1. 更加具体的调试信息, 例如调用了什么方法, 参数是什么, 可以使用 trace
  2. 在项目开发阶段, 调试程序的正确性, 可以使用 debug
  3. 正常的业务执行流程、系统的启动/关闭、需要做的审计等等都可以使用 info
  4. 不是错误, 不会影响程序的正常执行, 但是并不建议这样做, 可以使用 warn
  5. 程序出现了某种错误, 需要介入处理

技巧

1. 合理的记录日志

  1. 搞清楚当前工程的日志级别,保证日志可以被打印
  2. 使用参数化形式{}占位 , []行参数隔离
  3. 日志文件的名称应该是可以自解释的,通常,至少会要求名称中包含类型标识和时间标识
  4. 日志要有滚动策略,这是考虑到避免单个文件过大,以及磁盘占用问题

2. 日志有意义(正确性)且不冗余(必要性)

  1. 以实际场景为例来说明如何去做
  2. 导 HTTP请求的入参和结果
  3. 远程接口调用(HTTP或RPC)情况
  4. 特殊的条件分支

3. 不应打印日志

  1. 大数据量日志 空间的浪费
  2. 在循环中打日志,特别是大循环, 排查问题困难
  3. 没有意义的日志 对于系统维护没有帮助
  4. 如果日志什么都说明不了,那你一定要考虑修改下删除这条日志混清视听
  5. 密码、邮箱、手机号码属于私密信息,为了避免数据泄露,不应该打数据隐私

4. 日志能够对逻辑进行解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值