头两天领导分配个任务是要把项目中所有try catch里的异常处理收集到elk中,由于之前的处理方式五花八门,就集中处理了下, 事后还被批评了。

不是所有的异常信息都需要被记录到log中

使用SLF4J

  1. 使用门面模式的日志框架,有利于维护各个类的日志处理方式的统一。
  2. 实现方式的统一使用,使用logback框架。

什么时候应该打日志?

  1. 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志来定位问题所在的。
  2. 当你碰到if..else或者switch这样的分支的时候,可以在首行打印日志,用来确定进入了那个分支。
  3. 经常以功能为核心进行开发的时候,可以在提交代码前,通过日志看到整个流程。

基本格式

必须使用参数化信息的方式:

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

对于debug日志,必须判断是否为debug级别后,才进行使用。

不过不建议这样做。因为上面的代码涉及到了字符串的拼接, 会产生很多String对象,占用空间,影响程序性能。

可以使用 [{}] 进行参数的隔离

如果有参数变量,可以写成下面这样:

这样的格式写法,对于排查问题更有帮助。

不同级别的使用

ERROR

定义:影响到程序正常运行,当前请求正常运行的异常情况:

  1. 打开配置文件失败
  2. 对接第三方的异常(包括第三方返回错误码)
  3. 所有影响功能使用的异常。包括sqlException和除了业务异常之外的所有异常(runtimeException,Ecxception)

如果抛出了异常,就不要记录error日志,有最终处理方式进行处理。

如下图:

WARN

定义:不应该出现但是不影响程序,当前请求正常运行的异常情况:

  1. 有容错机制的时候出现的错误情况
  2. 找不到配置文件,但是程序可以自动创建或者能够继续向下执行
  3. 缓存池占用接近临界值的时候
  4. 接口抛出业务异常的时候

INFO

定义:系统运行信息,外部接口

  1. service中对于系统/业务状态的变更
  2. 主要逻辑分步骤
  3. 客户端请求参数
  4. 调用第三方的调用参数和调用结果

这里同样也是要有所抉择的,普通简单service是没有意义的。不是针对每个业务都这样做,

这里对于复杂的业务逻辑,例如电商系统中的下订单逻辑,工业系统的停送电逻辑等等

DEBUG

定义:可以填写想知道的相关信息,最好有相关参数,生产环境需要关闭debug,如果需要开启的话,需要使用开关进行管理,不能一直开启

TRACE

定义:特别详细的系统运行信息。业务代码中,不要使用(除非有特殊用意,否则用debug代替)

trace的级别比debug还要低一些,并且会自动检查级别,如果高于trace就跳过。

而debug是先生产要打印的语句,然后再检查级别。如果高于debug就不输出

所以要debug进行判断,否则会生成多余的对象。

slf4j的正确使用的更多相关文章

  1. Java 日志管理最佳实践

    转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...

  2. Java日志记录的5条规则

    日志记录是在软件开发过程中常常需要考虑的关键因素. 当产品运行出错时,日志文件通常是我们进行错误分析的首要选择. 而且,在很多情况下,它们是我们手上唯一可以用来查明发生状况和问题根本原因的信息. 可见 ...

  3. lombok使用教程

    Lombok介绍.使用方法和总结https://www.cnblogs.com/heyonggang/p/8638374.html Lombok简介.使用.工作原理.优缺点https://www.ji ...

  4. SLF4j 居然不是编译时绑定?日志又该如何正确的分文件输出?——原理与总结篇

    各位新年快乐,过了个新年,休(hua)息(shui)了三周,不过我又回来更新了,经过前面四篇想必小伙伴已经了解日志的使用以及最佳实践了,这个系列的文章也差不多要结束了,今天我们来总结一下. 概览 这篇 ...

  5. java日志组件介绍(common-logging,log4j,slf4j,logback )

    转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...

  6. Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明

    Log4j  Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...

  7. 转:java日志组件介绍(common-logging,log4j,slf4j,logback )

    原网址:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging common-logging是 ...

  8. 用slf4j+logback实现多功能日志解决方案 --- 转

    大家都知道,slf4j是原来log4j的作者写的一个新的日志组件,意思是简单日志门面接口,可以跟其他日志组件配合使用,常用的配合是slf4j+logback,无论从功能上还是从性能上都较之log4j有 ...

  9. 使用 logback + slf4j 进行日志记录

    此处主要介绍maven web工程下如何使用 logback + slf4j  进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...

随机推荐

  1. MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)

    注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...

  2. docker jenkins 插件安装提速

    公司安装的jenkins 自动布署服务挂了,好像有漏洞一直搞,打算重新安装一个,随便再学习一下 一上来就用docker 解决问题 #!/bin/bash docker stop myjenkins d ...

  3. Java 文件句柄泄露问题解决小记(转)

    转:Java 文件句柄泄露问题解决小记 维护 WebIDE 免不了要管理很多的文件, 自从我们线上系统增加了资源回收功能,便一直受一个问题困扰:后台线程解绑目录时偶尔报错,看症状因为是某些文件被占用了 ...

  4. 使用Python解压zip、rar文件

    解压 zip 文件 基本解压操作 import zipfile ''' 基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]]) ...

  5. 解决ImportError: No module named utils

    转载:https://blog.csdn.net/weixin_43979572/article/details/86159265 在Python中遇到了导包错误,其实包已经有了.原因是我再B文件的a ...

  6. word 条件多项式公式对齐

    条件多项式公式对齐 觉得有用的话,欢迎一起讨论相互学习~Follow Me 对于使用word编写具有多个多项式的公式时,经常会有所偏移 最不优雅的方式就是使用逗号进行分隔和排版使其公式上下对齐 第二种 ...

  7. 配置Pods和containers--为Containers和Pods分配CPU资源

    指定CPU请求和CPU限制 要为容器指定CPU请求,在容器资源清单中使用resources:requests字段.要指定CPU限制,使用resources:limits. cpu-request-li ...

  8. Spark Streaming反压机制

    反压(Back Pressure)机制主要用来解决流处理系统中,处理速度比摄入速度慢的情况.是控制流处理中批次流量过载的有效手段. 1 反压机制原理 Spark Streaming中的反压机制是Spa ...

  9. 分布式ID生成总结

    1.数据库自增id 新建一个公共库,库里面新建一个序列表,主键id自增,每次请求增加数据都往这个表中插入数据,然后获取到id,然后使用即可. 优点:方便简单 缺点:单库生成自增id,高并发下,会有瓶颈 ...

  10. H3C 开局设置

    简介: 系统菜单  即 [H3C] 模式 一:恢复出厂设置 这个没什么说的,必须Console连接. 连上以后,在启动时Ctrl+B,进入管理启动菜单,删除文件,删除配置文件然后重启即可. Ctrl+ ...