在项目中pom.xml
我看到了如下的依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
有人可以告诉我slf4j-log4j12
和&amp;之间的区别吗? log4j
?
答案 0 :(得分:3)
slf4j-log4j12
提供了SLF4J和Log4J之间的桥梁,因此它了解SLF4J和Log4J。
根据the docs:
Log4j 2 SLF4J绑定允许编码为SLF4J API的应用程序使用Log4j 2作为实现。
如果希望SLF4J将日志记录路由到Log4J,则必须提供两个依赖项。再次,来自文档:
只需将Log4j 2 SLF4J Binding jar以及Log4j 2 jar和SLF4J API jar包括在内,即可使Log4j 2处理所有SLF4J日志记录。
答案 1 :(得分:0)
我会发布有关这些记录器消息的一些观点。
<强> log4j的:强>
logger.debug("This is log message:" + msg);
每次评估行时都会连接 log4j
字符串,即使日志级别低于debug,也不会使用该字符串。
<强> SLF4J:强>
logger.debug("this is log slf4j message",msg);
slf4j
字符串和参数传递给记录器,只有在实际使用日志消息时才会替换它们。
唯一的区别是表现。由于字符串连接与log4j
比较,slf4j
将占用更多时间。
答案 2 :(得分:0)
总结:
<dependency> <!--Facade for logging systems-->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency> <!--Log4j 2 implementation for slf4j-->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.0</version>
</dependency>
此外,请确保您使用的是log4j2
属性文件。使用'log4j.xml'的错误确实花费了我很多时间
答案 3 :(得分:-1)
SLF4J:
日志记录组件的抽象层。 我们可以在没有太多代码更改的情况下更改日志记录。
的Log4j:
一个日志记录组件,它提供了日志记录的核心功能。