我们有osgi
应用程序,karaf
并希望在 bundle jar 中有日志记录属性,以将日志记录配置保存在源中(目前它们在karaf/etc/org.ops4j.pax.logging.cfg
)
更新:事实上,现在我们将日志配置保存在 Karaf CM 管理服务中,这是一个问题,因为在每个版本中,我们都应该向我们的操作团队编写特殊说明,以进行任何微小的日志更改。此外,我们有多个 karaf 节点(约 10 个),并且为每个节点重复这些操作是一项复杂且容易出错的任务。当然我们可以安装Cellar
到每个 karaf 节点,但它会使 osgi 环境复杂化并且需要一些支持,所以最简单的方法就是将配置保存在源代码中
我已经搜索了最简单的方法来创建一个单独的包,其中包含所有依赖项(logback、slf4j、config)的实际日志记录内容,然后org.slf4
从它们中导出。
我试过这个pom.xml
:
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<unpackBundle>true</unpackBundle>
<instructions>
<Embed-Dependency>*;groupId=!junit|org.springframework|log4j|javax.jms|javax.mail</Embed-Dependency>
<Embed-Transitive>false</Embed-Transitive>
<Embed-Directory>target/dependency</Embed-Directory>
<Embed-StripGroup>true</Embed-StripGroup>
<Export-Package>org.slf4j</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<excludeGroupIds>junit,org.springframework,log4j</excludeGroupIds>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>com.springsource.ch.qos.logback.classic</artifactId>
<version>0.9.15</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>com.springsource.ch.qos.logback.core</artifactId>
<version>0.9.15</version>
</dependency>
但它会捆绑清单很多额外的依赖项,例如javax.mail/jms
:
Import-Package: javax.jms,javax.mail,javax.mail.internet,javax.management,javax.naming,javax.servlet,javax.servlet.http,javax.sql,javax.xml.parsers,org.codehaus.janino,org.slf4j;version="1.6",org.xml.sax,org.xml.sax.helpers,sun.reflect
当然,将所有这些不必要的东西部署到 karaf 以解决它们并不是一个好方法。
出了什么问题或如何构建一个包含所有日志依赖项的单个包?