我们在应用程序代码中使用SLF4J和logback,而SNMP4J将log4j作为依赖项。
有人能告诉我如何让SNMP4J与logback一起工作吗?
版本
发布于 2018-04-15 15:36:54
您可以为logback编写自己的LogAdapter和LogFactory实现。那应该很简单。您可以从Log4JLogAdatper和Log4JLogFactory开始。
发布于 2018-04-16 08:45:49
通常您需要所有的日志记录,无论是JUL、Log4J、SLF4J、JCL还是logback,都是由slf4j/logback记录的。通过将这些包添加到类路径中,您可以获得这样的结果:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>...</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>...</version>
</dependency>
对于JUL (java.util.logging),您需要调用两个额外的方法:
org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger();
org.slf4j.bridge.SLF4JBridgeHandler.install();
使用此配置,您可以自由使用SNMP4J中的任何日志框架。Log4J示例:
LogFactory.setLogFactory(new Log4jLogFactory());
您可能必须将Log4J从传递的SNMP4J依赖项中排除在外(如果这个部分现在已经过时,我将删除它):
<dependency>
<groupId>org.snmp4j</groupId>
<artifactId>snmp4j</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
对于记录,slf4j/logback依赖项确实如下所示(示例):
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>...</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>...</version>
</dependency>
https://stackoverflow.com/questions/49792459
复制相似问题