【发布时间】:2016-06-10 09:36:20
【问题描述】:
我有一个问题我还没有找到答案。那么这两行有什么区别呢?
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
和
private static final Logger LOGGER = Logger.getLogger(MyClass.class);
应该使用哪一个,为什么?谢谢。
【问题讨论】:
我有一个问题我还没有找到答案。那么这两行有什么区别呢?
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
和
private static final Logger LOGGER = Logger.getLogger(MyClass.class);
应该使用哪一个,为什么?谢谢。
【问题讨论】:
您已经用slf4j 和log4j 标记了这个问题,所以我假设您的项目设置为使用SLF4J 并且它使用它的log4j 绑定。
如果您在课堂上使用 SLF4J 绑定(顶部有 import org.slf4j.Logger;),那么您需要使用 LoggerFactory.getLogger(您还需要使用 import org.slf4j.LoggerFactory;)。
如果您直接使用 log4j(在班级顶部有 import org.apache.log4j.Logger;),请使用 Logger.getLogger。
通常,拥有 SLF4J 的目的是成为您用于所有日志记录命令的标准,并让它担心连接到实际的日志记录框架。因此,如果您的项目使用 SLF4J,请使用 SLF4J 绑定。或者,如果你只是想直接使用 log4j,那么你可以直接使用它,也许你甚至不需要使用 SLF4J 库。 (我自己是 SLF4J 的忠实粉丝,所以我建议将它用于一切,但这只是我的意见。)
我猜你的开发环境可能会自动选择其中一个来导入,你甚至可能在不同的类中导入了不同的Loggers,而你甚至没有意识到它们使用的不是同一个。
【讨论】: