我正在使用commons-logging,它应该在OSGi环境中桥接到Log4J2,所以在pom.xml
中添加了依赖项,export-package和import-package,如下所示,但是logger没有设置为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>
[UPDATE]
从log4j用户邮件列表中我可以看出,由于ServiceLoader的非模块化特性。我在OSGi环境中检查了ServiceLoader的一些用法,以找到接口的实现,但仍然无法获得如何使其工作。
我也尝试使用pax日志记录,但结果是相同的,除了记录器现在设置为JclLogger
答案 0 :(得分:0)
如果以上内容在您的用户套装中,则表明这是不正确的。 在您的用户包中,您应该只使用commons日志记录API,而不是更改maven bundle插件的设置。
然后它将为commons日志记录API创建Import-Package语句,但不为log4j创建,这是你想要的。
然后,您应该在运行时安装合适的日志框架。我知道pax-logging可以处理以OSGi兼容方式登录的commons。也许普通的log4j2也可以,但我不确定。