我有一个问题我还没找到答案。那么两条线之间的区别是什么?
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
和
private static final Logger LOGGER = Logger.getLogger(MyClass.class);
应该使用哪一个?为什么?感谢。
答案 0 :(得分:3)
您已使用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的忠实粉丝,所以我建议将它用于一切,但这只是我的意见。)
我猜你的开发环境可能会自动选择其中一个导入,你甚至可能在不同的类中导入了不同的Logger
,你甚至没有意识到他们没有使用同一个