Java Log4j 2.8无法在OSGi环境中加载自定义转换器

Java Log4j 2.8无法在OSGi环境中加载自定义转换器,java,plugins,osgi,converter,log4j2,Java,Plugins,Osgi,Converter,Log4j2,我目前正在切换到log4j2,并在OSGi环境中工作。log4j 2.7分支中的OSGi有几个问题,这促使我将2.8作为最终库。 问题是我在我的项目中实现了两个自定义模式转换器,我无法加载和识别它们 DEBUG Initializing configuration XmlConfiguration[location=C:\Program Files\...\etc\log4j2.xml] . . DEBUG Took 0,001043 seconds to load 0 plugins from

我目前正在切换到log4j2,并在OSGi环境中工作。log4j 2.7分支中的OSGi有几个问题,这促使我将2.8作为最终库。 问题是我在我的项目中实现了两个自定义模式转换器,我无法加载和识别它们

DEBUG Initializing configuration XmlConfiguration[location=C:\Program Files\...\etc\log4j2.xml]
.
.
DEBUG Took 0,001043 seconds to load 0 plugins from package common.audit.sink.impl.log4j2.converter
虽然至少有10个。这会导致以下错误:

DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
DEBUG PatternLayout$Builder(pattern="%ED;...
ERROR Unrecognized format specifier [ED]
ERROR Unrecognized conversion specifier [ED] starting at position 3 in conversion pattern.
我已经根据需要设置了几乎所有的东西,不管怎样,它与2.7一起工作。 插件实现带有注释,并且两个newInstance、format方法都是根据

log4j2.xml中的包声明:

<Configuration status="trace" name="Systemtest_Server" packages="common.audit.sink.impl.log4j2.converter">
在Equinox容器启动时,log4j-core-2.8.jar捆绑包与log4j-api-2.8.jar一起激活。配置文件由系统属性指向,显然可以从我收到的调试消息中工作

然而,我发现log4j-Jira上有报告,这是我的问题,因为在修改log4j-api-2.8.jar使其导入org.apache.logging.log4j.core.util包以便我的服务器正常启动之前,我一直面临相同的异常。有一些评论认为这可能导致OSGi中log4j2的不可扩展性

那么,有没有办法克服这个问题?快速修复就足够了?或者,这里是否有我可能忘记配置的内容


非常感谢您的帮助。

好的,我自己来回答这个问题,也许它也会帮助别人。我玩了很多游戏,老实说,我不太熟悉OSGi

我最终发现,你必须确保以下几点:

捆绑包必须在OSGi容器中激活。不活动的捆绑包不扫描插件。在配置中将bundle标记为激活并不一定意味着它将实际发生。例如,我的包清单中的某些错误阻止了这种情况的发生。因此,为了确保我与 导出包:common.audit.sink.impl.log4j2* 进口包装:* 要加载插件,必须至少保持以下一项: 您的自定义插件包是log4j core的一个片段,在其清单中声明: 片段宿主:org.apache.logging.log4j.core 可能是正确的方法。 您的bundle以与log4j bundle相同的优先级被激活,不仅API需要激活,核心也需要激活才能启用插件搜索 当然,我的问题中提到的配置也是需要的。在此之后,我没有发现任何错误,并看到如下跟踪:

DEBUG Oracle Nashorn Version: 1.8.0_102, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript}
DEBUG Took 0,008133 seconds to load 16 plugins from package common.audit.sink.impl.log4j2.converter
DEBUG PluginManager 'Core' found 112 plugins
DEBUG PluginManager 'Level' found 0 plugins
...
DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
DEBUG PatternLayout$Builder(pattern="%ED;%EU;%EL;...
DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.FileAppender].
DEBUG Oracle Nashorn Version: 1.8.0_102, Language: ECMAScript, Threading: Not Thread Safe, Compile: true, Names: {nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript}
DEBUG Took 0,008133 seconds to load 16 plugins from package common.audit.sink.impl.log4j2.converter
DEBUG PluginManager 'Core' found 112 plugins
DEBUG PluginManager 'Level' found 0 plugins
...
DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
DEBUG PatternLayout$Builder(pattern="%ED;%EU;%EL;...
DEBUG Building Plugin[name=appender, class=org.apache.logging.log4j.core.appender.FileAppender].