日志规范

==作者:YB-Chi==

[TOC]

为什么要打印

1
请求失败后前台无反应,后台无错误日志,很难判定维护的方式.

日志内容

1
2
log.error(函数名 : \n 各类参数或者对象 toString : \n ${e});
log.error("findAlarmLogByTime : \n obj.toString() \n ${e}")

打印规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1.尽量不要捕获 Java 类库中定义的继承自 RuntimeException 的运行时异常类,如:IndexOutOfBoundsException / NullPointerException,这类异常由程序员预检查来规避,保证程序健壮性。

2.一大段代码进行 try-catch,这是不负责任的表现。catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理。

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

4.谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志

5.对 trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方
式。

logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);

6.finally 块必须对资源对象、流对象进行关闭,有异常也要做 try-catch

7.捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容

8.如果日志用英文描述不清楚,推荐使用中文注释。对于中文 UTF-8 的日志,在 secureCRT 中,set encoding=utf-8

9.生产环境禁止直接使用 System.out 或 System.err 输出日志或使用 e.printStackTrace()打印异常堆栈

10.打印error log的方法:logger.error(e.getMessage, e);这样打印出异常的所有堆栈
文章作者: CYBSKY
文章链接: https://cybsky.top/2024/01/29/cyb-mds/java/log/日志规范/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CYBSKY