日志规范1

1.讨论

是否遇到过下面的情况,排查问题时,发现那块出现错误的地方有日志输出,但是输出的日志对于排查问题一点用都没有,好的日志大家感觉都具备哪些东西?

2.日志通用规范

1、**【强制】**在日志输出时,字符串变量之间的拼接使用占位符的方式。

说明:因为 String 字符串的拼接会使用 StringBuilder 的 append() 方式,有一定的性能损耗。使用占位符仅是替换动

作,可以有效提升性能。

2、**【强制】**生产环境禁止使用 System.out 或 System.err 输出或使用 e.printStackTrace() 打印异常堆栈。

说明:标准日志输出与标准错误输出文件每次 Jboss 重启时才滚动,如果大量输出送往这两个文件,容易造成文件大小

超过操作系统大小限制。

3、**【强制】**日志打印时禁止直接用 JSON 工具将对象转换成 String。

说明:如果对象里某些 get 方法被覆写,存在抛出异常的情况,则可能会因为打印日志而影响正常业务流程的执行。

正例:打印日志时仅打印出业务相关属性值或者调用其对象的 toString() 方法。

4、**【强制】**正常参数日志使用info级别,不可使用error,warn等,以免混淆正常查询操作。

5、**【强制】**Log的内容一定要确保不会因为Log语句的问题而抛出异常造成中断。

说明:log.info(“list size:{}”,list.size());可能因为list为null,抛出异常。

6、**【强制】**坚决杜绝日志输出的copy行为,防止日志张冠李戴。

7、**【强制】**避免重复的打印同一日志,杜绝在循环体中输出日志。

3.常用日志级别使用场景

info 打印业务关键信息可以用info,例如打印接口入参值、返回值、定时任务的开始执行与结束执行、Service方法中对于系统/业务状态的变更 用于观察信息流转,
warn 非重大错误可用warn,有容错机制的时候出现的错误情况 可修复,系统可继续运行下去;
error 非业务的重大错误,如接口调用失败、调用超时打印error级别日志、所有第三方对接的异常(包括第三方返回错误码)所有影响功能使用的异常,包括:SQLException 、空指针异常以及业务异常之外的所有异常 可修复,但无法确定系统会正常的工作下去;1.

4.日志关键字

public enum UlpLoggingSignEnum {
    /** controller层*/
    CONTROLLER(1,"controller-logging "),
    /** service层*/
    SERVICE(2,"service-logging "),
    /** dao层*/
    DAO(3,"dao-logging "),
    /** redis缓存层*/
    REDIS(4,"redis-logging "),
    /** rpc层*/
    RPC(5,"rpc-logging "),
    /** http请求层*/
    HTTP(6,"http-logging "),
    /** MQ相关*/
    MQ(7,"mq-logging "),
    /** elasticsearch相关 */
    ES(8,"elasticsearch-logging "),
    /** 定时任务相关 */
    TIMEDTASK(9,"timed-task-logging "),
    /** 定时检查相关 */
    TIMECHECK(10,"timed-check-logging ");

    UlpLoggingSignEnum(int code, String description){
       this.code = code;
       this.description = description;
    }
    private int code;

    private String description;
}

4.1 controller层

logger.info(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值