Home / cs-notes / Books / Java / 阿里Java开发手册 / v2022.02.03 / Note / 注意 / 02. 异常日志
异常日志
错误码
- 指定原则:
- 快速溯源
- 沟通标准化
异常处理
-
事务抛异常时, 需要手动回滚事务
-
try-with-resources
-
finally 中不使用 return 语句
-
非一方代码的异常捕获, 使用 Throwable
- 方法注释 - 返回值 - 说明是否会返回 null 以及 null 的含义
- 划清职责 (null 由谁处理) 避免 NPE
- 引用类型使用前确保做过 NPE 校验
- 可以使用 Optional
- 避免直接使用 RuntimeException
- 使用具有具体业务含义的异常, 比如自定义异常
- 对外开放接口, 使用 错误码
- 应用内部使用异常
- 应用间 RPC 使用 Result 方式:
- isSuccess 方法
- errorCode
- errorMessage
日志规约
-
网络安全相关信息, 保存6个月, 多机备份, 事关法律
-
trace / debug / info 日志一律先执行 enabled 判断
- 子 logger 设置 additivity = false, 避免重复输出
- 所有 logger 都是 root logger 的 子 logger
- additivity = true 时, 将同时输出的当前 logger 的所有 appender 和 父 logger 的所有 appender
- 禁止输出到 out 流 及 err 流, 否则可能导致单个文件过大
- System.out
- System.err
- e.printStackTrace()
-
异常日志要带上下文信息
-
输出日志, 使用 toString() 而非现转 json, 避免出现异常, 影响流程
- 不要输出没人看的日志