使用log4j通过logback进行日志记录

时间:2020-08-28 13:27:06

标签: java logging logback

我想使用log4j(而不是slf4j)与logback.jar一起进行日志记录。反正有吗?我正在使用消耗log4j的Web服务,并且打算同时使用logback.jar。

2 个答案:

答案 0 :(得分:0)

您可以做到。在您的情况下,它将是log4j和SLF4j的组合。 SLF4j是一个Facade库,它为log4j,logback,java.util.logger等日志记录库提供抽象,并且不进行实际的日志记录。 因此,基本上SLF4j可以用作各种日志记录框架的简单外观或抽象,允许最终用户在部署时插入所需的日志记录框架。
有关实施,您可以参考:https://medium.com/@krishankantsinghal/logback-slf4j-log4j2-understanding-them-and-learn-how-to-use-d33deedd0c46

答案 1 :(得分:0)

slf4j项目提供了一些用于处理旧式日志记录的“桥接” jar。根据{{​​3}}:

log4j-over-slf4j


SLF4J附带一个名为log4j-over-slf4j的模块。它允许log4j用户将现有应用程序迁移到SLF4J,而无需更改任何代码,而只需用log4j-over-slf4j.jar替换log4j.jar文件,如下所述。

它如何工作?


log4j-over-slf4j模块包含最广泛使用的log4j类的替换,即org.apache.log4j.Category,org.apache.log4j.Logger,org.apache.log4j.Priority,org.apache.log4j。级别,org.apache.log4j.MDC和org.apache.log4j.BasicConfigurator。这些替换类将所有工作重定向到其相应的SLF4J类。

要在自己的应用程序中使用log4j-over-slf4j,第一步是找到log4j-jar,然后用log4j-over-slf4j.jar替换log4j.jar。请注意,您仍然需要SLF4J绑定及其依赖关系才能使log4j-over-slf4j正常工作。

在大多数情况下,只需要替换jar文件即可从log4j迁移到SLF4J。

请注意,由于此迁移,将不再拾取log4j配置文件。如果需要将log4j.properties文件迁移到logback,则log4j转换器可能会有所帮助。有关配置登录的信息,请参阅其手册。

什么时候不起作用?


当应用程序调用网桥中不存在的log4j组件时,log4j-over-slf4j模块将无法工作。例如,当应用程序代码直接引用log4j追加器,过滤器或PropertyConfigurator时,则log4j-over-slf4j不足以替代log4j。但是,当通过配置文件配置log4j时,无论是log4j.properties还是log4j.xml,log4j-over-slf4j模块都应该可以正常工作。

对于您而言,您需要做的是将log4j-over-slf4jlog4j12logback-classic JAR一起添加。您还需要在logback配置中重新实现log4j日志配置文件的相关部分。