logging - LoggerFactory 与 Logger

标签 logging log4j slf4j

我有一个问题我还没有找到答案。那么这两条线有什么区别呢?

private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);



private static final Logger LOGGER = Logger.getLogger(MyClass.class);

应该使用哪一个,为什么?谢谢。

最佳答案

您已使用 标记了问题和 ,所以我假设您的项目设置为使用 SLF4J 并且它使用它的 log4j 绑定(bind)。

如果您在类里面使用 SLF4J 绑定(bind)(顶部有 import org.slf4j.Logger;),那么您需要使用 LoggerFactory.getLogger (你还需要 import org.slf4j.LoggerFactory; )。

如果您直接使用 log4j(在类(class)顶部有 import org.apache.log4j.Logger;),请使用 Logger.getLogger .

通常,拥有 SLF4J 的目的是成为您用于所有日志记录命令的标准,并让它担心连接到实际的日志记录框架。因此,如果您的项目使用 SLF4J,请使用 SLF4J 绑定(bind)。或者,如果你只是想直接使用 log4j,那么你可以直接使用它,也许你甚至不需要使用 SLF4J 库。 (我自己是 SLF4J 的忠实粉丝,所以我建议将它用于一切,但这只是我的意见。)

我猜也许你的开发环境会自动选择其中一个来导入,你甚至可能有不同的Logger s 在不同的类中导入,您甚至没有意识到它们使用的不是同一个类。

关于logging - LoggerFactory 与 Logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744857/

相关文章:

linux - Openldap 日志未生成

java - log4j.properties(没有这样的文件或目录)

java - 如何在 catch 子句之外记录堆栈跟踪

java - Log4j XML 配置调试级别问题

java - Hibernate 孤儿删除日志记录

java - 日志级别 log4j

c++ - 配置 log4cpp 日志记录级别优先级

java - Logback:如何将日志目录从 "tomcat/bin"更改为与应用程序相关?

java - 用Java编写一个简单的打印方法用于调试

apache-spark - slf4j-log4j12.jar 和 log4j-over-slf4j.jar 在同一路径中,同时在 Maven POM 中解决依赖关系