log4j 、logback 以及slf4j三者之间的关系

时间:2024-04-05 20:05:23

在项目的开发中由于对于log4j、logback以及slf4j之间的关系和相关的知识不能清晰掌握,在业余时间进行记录。

1、三者之间的关系

 1)

  简答的讲就是slf4j是一系列的日志接口,而log4j logback是具体实现了的日志框架

  因为是接口,所以在项目中如果你不引用log4j 、logback或者其它日志框架你会发现,由于没有给出具体的logger实现,

  控制台是不能够正常的输出日志信息。也就是说我们在具体开发中,需要绑定一个日志框架,才能正常的使用slf4j。

 2)  

log4j和logback就是两个受欢迎的日志框架。但两者又有不同:

   log4j是apache实现的一个开源日志组件。包的实现(Wrapped implementations)

   logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现。(Native implementations)

    log4j配置文件需要web.xml文件完成加载,logback.xml文件无需,只要放在资源根路径下就好。

3)总结:

  slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架,他们可以单独的使用,也可以绑定slf4j一起使      用。

  单独使用:分别调用框架自己的方法来输出日志信息。

  绑定slf4j一起使用:调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)

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

2、日志级别

log4j提供了4种日志级别和2种日志开关。logback与其一样,logback的日志级别定义在ch.qos.logback.classic.Level类中。
log4j官方网址: http://logging.apache.org/log4j/1.2/

4种级别:

DEBUG:输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的。 
INFO: 输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。 
WARN: 输出警告信息;表明会出现潜在错误的情形。 
ERROR:输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。 
FATAL: 输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。

2个日志开关 :
ALL level:打开所有日志记录开关;是最低等级的,用于打开所有日志记录。 
OFF level:关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录。

按照范围从小到大排序:

OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level;范围大的会包含范围小的,例如日志设置为INFO级别的话则FATAL、ERROR、WARN、INFO的日志开关都是打开的,而DEBUG的日志开关将是关闭的。

建议:

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