我有一个问题我还没有找到答案。那么这两条线有什么区别呢?
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
和
private static final Logger LOGGER = Logger.getLogger(MyClass.class);
应该使用哪一个,为什么?谢谢。
最佳答案
您已使用 slf4j 标记了问题和 log4j ,所以我假设您的项目设置为使用 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/