日志


日志级别

4种日志级别

  • Debug
  • Info
  • Warn
  • Error

4种日志级别从上到下的级别依次升高,系统中会设置一种日志级别,则该日志级别以及高于该日志级别的日志均会被记录。

Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

Log4j默认的优先级为ERROR或者WARN(实际上是ERROR)。

Log4j定义了8个日志级别,优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。

DEBUG

DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。

INFO

INFO 日志在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。

从某种角度上说,INFO 输出的信息可以看作是软件产品的一部分(就像那些交互界面上的文字一样),所以需要谨慎对待,不可随便。

WARN

WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。

Error

ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。

Fatal

FATAL level指出每个严重的错误事件将会导致应用程序的退出。


Slf4J

slf4与log4j、logback关系

SLF4,The Simple Logging Facade for Java是什么?

笼统的讲就是slf4j是一系列的日志接口,而log4j和logback是具体实现了的日志框架。

The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time. Note that SLF4J-enabling your library/application implies the addition of only a single mandatory dependency, namely slf4j-api-1.7.21.jar.

官方文档明确描述了三者的关系。slf4j译为简单日志门面,是日志框架的抽象。而log4j和logback是众多日志框架中的几种。

应用程序调用slf4j api,而日志的输出最终是由底层的日志框架来实现的。

logback是直接实现了slf4j的接口,是不消耗内存和计算开销的。而log4j不是对slf4j的原生实现,所以slf4j api在调用log4j时需要一个适配层。

slf4j是java的一个日志门面,提供了日志框架一些通用的api,log4j和logback是具体的日志框架。

log4j和logback可以单独的使用,也可以绑定slf4j一起使用。单独使用,则分别调用框架自己的方法来输出日志信息;绑定slf4j一起使用,则调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)。

不推荐直接单独使用日志框架。假设项目中已经使用了log4j,而我们此时加载了一个类库,而这个类库依赖另一个日志框架。这个时候我们就需要维护两个日志框架,这是一个非常麻烦的事情。而使用了slf4j就不同了,由于应用调用的抽象层的api,与底层日志框架是无关的,因此可以任意更换日志框架。

使用slf4j绑定日志系统的优势

  • 软件工程的角度。抽象,解耦,便于维护。
  • 语法设计角度。slf4j有{}占位符,而log4j需要用“+”来连接字符串,既不利于阅读,同时消耗了内存(heap memory)。

log4j与logback

log4j 是 apache的一个开源日志框架。

logback相对于log4j来说,更新一点,是由log4j的作者设计实现的,第一个版本是2011推出的。无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。

但是两者的用法几乎差别不大。下面是logback的优势:

  • 更快的执行速度
  • 充分的测试
  • logback-classic 非常自然的实现了SLF4J
  • 丰富的扩展文档
  • 可以使用使用XML配置文件或者Groovy
  • 自动重新载入配置文件
  • 优雅地从I/O错误中恢复
  • 自动清除旧的日志归档文件
  • 自动压缩归档日志文件

以上,从性能的角度,可以尽快从log4j迁移到logback上来。


slf4j绑定log4j

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。

properties格式配置

log4j.properties

xml格式配置

log4j.xml


slf4j绑定logback


资料

results matching ""

    No results matching ""