【发布时间】:2017-07-04 07:02:19
【问题描述】:
我正在使用应在 OSGi 环境中桥接到 Log4J2 的 commons-logging,因此在 pom.xml 中添加了依赖项、导出包和导入包,如下所示,但记录器未设置为 Log4J2 记录器。没有显示错误,但在调试时我发现它被设置为 JDK14Logger。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>2.8.2</version>
</dependency>
<Export-Package>
org.apache.logging.log4j.*,
org.apache.commons.logging.*
</Export-Package>
<Import-Package>
!org.apache.logging.log4j.*,
!org.apache.commons.logging.*,
*;resolution:=optional
</Import-Package>
[更新]
从 log4j 用户邮件列表中我可以看出,由于 ServiceLoader 的非模块化特性。我在 OSGi 环境中检查了一些 ServiceLoader 的用法,以找到接口的实现,但仍然不知道它是如何工作的。
我也尝试过使用 pax 日志记录,但结果相同,只是现在将记录器设置为 JclLogger
【问题讨论】: