如何用最新的KARAF替换pax-logging-service与pax-logging-log4j2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用最新的KARAF替换pax-logging-service与pax-logging-log4j2相关的知识,希望对你有一定的参考价值。

我们将OSGI KARAF升级到4.1.x版本,并且默认情况下,pax-logging-api实现已从log4j1更改为Log4J2。

在log4j1之前,我们曾经有一个自定义appender,它扩展了fileappender并从CFG文件中获取配置。我们将此appender编译为片段,并将片段主机包作为pax-logging-service提供以进行加载。

现在使用log4J2,创建自定义appender看起来非常不同。我经历了这个问题How to Create a Custom Appender in log4j2?

这是非常有帮助的,但我现在还不完全清楚如何加载它?

如何从早期的CFG文件中获取配置参数?

我们还可以在这里使用片段和提及片段 - 宿主包来使它工作吗?

问候穆尼什

答案

我不知道Munish Gupta是否解决了这个问题。只需为搜索问题的人编写解决方案。我花了很长时间才解决它。

  • 首先,在我们自己的包中编写自定义appender。 log4j2中的Appender是一个插件,所以我们必须添加注释@Plugin和@PluginFactory。看看这个问题: How to Create a Custom Appender in log4j2?
  • 其次,生成Plugin.dat文件。根据log4j2手册,将自动生成Plugin.dat。 但是当我编写自己的appender时,它不会生成Plugin.dat。然后我们需要在pom.xml中添加此配置 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <executions> <execution> <id>log4j-plugin-processor</id> <goals> <goal>compile</goal> </goals> <phase>process-classes</phase> <configuration> <proc>only</proc> <annotationProcessors> <annotationProcessor> org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor </annotationProcessor> </annotationProcessors> </configuration> </execution> </executions> </plugin> Official manual: log4j2 plugin
  • 第三,我们需要修改maven-bundle-plugin(BND),生成的Plugin.dat不会出现在最后的jar中。(BND FAQ已经说过了。)。我们需要使用标签。这是配置。 <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>3.3.0</version> <extensions>true</extensions> <configuration> <instructions> <Include-Resource>META-INF=${project.build.directory}/classes/META-INF</Include-Resource> </instructions> </configuration> </plugin> BND FAQ
  • 第四,将我们的自定义appender包注册为片段,片段主机为pax-logging-log4j2。 <configuration> <instructions> <Bundle-Name>${project.artifactId}</Bundle-Name> <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName> <Bundle-Version>${project.version}</Bundle-Version> <Export-Package>com.good.gcs.core.logging</Export-Package> <Import-Package>!*</Import-Package> <Fragment-Host>org.ops4j.pax.logging.pax-logging-log4j2</Fragment-Host> <_failok>true</_failok> </instructions> </configuration> Ref:Log4j Register the bundle as fragment

以上是关于如何用最新的KARAF替换pax-logging-service与pax-logging-log4j2的主要内容,如果未能解决你的问题,请参考以下文章

如何用pip为Python3安装模块

如何用pip为Python3安装模块

如何用pip为Python3安装模块

如何用vs08编译ffmpeg

如何用ajax响应替换html元素?

如何用加号“+”号替换空格