如何在运行时更改slf4j级别?

时间:2012-06-21 19:08:44

标签: java log4j slf4j

我使用SLF4j作为我的日志框架,由log4j支持。我的问题是我正在寻找一种在运行时更改记录器日志记录级别的方法。

据我所知,slf4j不允许直接通过自己的API,因此,我必须直接访问日志记录提供程序。就个人而言,我发现这是slf4j的一个巨大缺陷。所以现在我的问题是如何通过slf4j以编程方式确定我正在使用哪个提供程序?使用slf4j的最大目的是让您成为提供者不可知的 - 您可以轻松地在您喜欢的日志记录系统之间切换,而无需重新编码。但是现在,如果我必须直接调用log4j,我就失去了这种能力。

至少,我希望能够确定我是否使用log4j作为提供程序,如果是,则允许用户切换日志级别。

如果我LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME),则结果是org.slf4j.impl.Log4jLoggerAdapter的实例,甚至不是org.apache.log4j.Logger的实例(正如我希望/期望的那样)。

有没有办法找到这个?

谢谢, 埃里克

1 个答案:

答案 0 :(得分:13)

SLF4J被设计为的抽象,而不是应用程序(当然,您可以并且仍然应该在您自己的应用程序的日志记录调用中使用SLF4J,以保持一致性)。在您自己的应用程序中,您选择了底层记录器框架,因此可以在特定于logging-config的部分中访问log4j API。

库不应该改变日志配置,恕我直言,因此它不适合在SLF4J API上使用。