log4j、logback、log4j12、slf4j的区别

日志是一个系统必不可少的部分,每个程序员都在用,但是对于java程序员来说,不断发现的日志框架让我们晕头转向,
于是,有识之士说:必须把这个弄清楚!

其实,只要花那么几分钟就可以明白他们之间的关系,只要找对了资源,网上很多博客都是抄过来抄过去,很少自己掌握了信息来源和独立见解。

最好的信息来源当然是官网,下面就开始花几分钟弄明白他们的关系。

SLF4J

去到它的官网:https://www.slf4j.org/manual.html, 不下一分钟,就会发现这张图:

再看看开头的解释:

Simple Logging Facade for Java(SLF4J)可用作各种日志框架的简单外观或抽象,例如java.util.logginglogback和log4j。 SLF4J允许最终用户在部署时插入所需的日志记录框架。 请注意,启用SLF4J的库/应用程序意味着只添加一个强制依赖项,即slf4j-api-2.0.0-alpha1-SNAPSHOT.jar

反正我瞬间就明白了,不明白自己去读把。

特殊说明下:slf4j和log4j中间那一层log4j12就是一个连接层,就像适配器一样把slf4j和log4j连接起来。

好了,本文完结,但是为了自己好,还是将这些slf4j的实现的配置文档都记录下,方便查找配置。

log4j

https://logging.apache.org/log4j

关于配置看这里:https://logging.apache.org/log4j/2.x/manual/configuration.html

里面有各种格式文件的示例:

  • xml
  • yaml
  • json
  • properties

logback

官方:https://logback.qos.ch/, 其github: https://github.com/qos-ch/logback

关于配置查看这里:https://logback.qos.ch/manual/configuration.html

常见问题

使用spring框架时,spring本身依赖logback,而其他库的实现使用log4j打日志,一般解决方法是:去掉logback,完全使用log4j。