LoggerFactory与Logger

时间:2016-06-10 09:36:21

标签: logging log4j slf4j

我有一个问题我还没找到答案。那么两条线之间的区别是什么?

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

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

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

1 个答案:

答案 0 :(得分:3)

您已使用标记了该问题,因此我假设您的项目已设置为使用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的忠实粉丝,所以我建议将它用于一切,但这只是我的意见。)

我猜你的开发环境可能会自动选择其中一个导入,你甚至可能在不同的类中导入了不同的Logger,你甚至没有意识到他们没有使用同一个