- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在切换到 log4j2,并且在 OSGi 环境中工作。 log4j 2.7 分支中的 OSGi 存在一些问题,这鼓励我选择 2.8 作为最终库。
问题是我在我的项目中实现了几个自定义 PatternConverters,但我无法加载和识别它们
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 方法根据 this guide 实现
log4j2.xml 中的包声明:
<Configuration status="trace" name="Systemtest_Server" packages="common.audit.sink.impl.log4j2.converter">
插件元数据已生成并存在于包含插件的 *.jar 包中
META-INF\org\apache\logging\log4j\core\config\plugins\Log4j2Plugins.dat
log4j-core-2.8.jar 包在 Equinox 容器启动时与 log4j-api-2.8.jar 一起激活。配置文件由系统属性指向并且可以工作(显然来 self 收到的调试消息)。
但是,我发现this issue报告了 log4j Jira,这是我的问题,因为我遇到了同样的异常,直到我修改了 log4j-api-2.8.jar 以使其导入 org.apache.logging.log4j。 core.util 包,这样我的服务器就能正常启动。有一些评论表明这可能会导致 OSGi 中 log4j2 的不可扩展性。
那么有什么方法可以解决这个问题(快速修复就足够了)?或者,我可能忘记在这里配置一些东西吗?
非常感谢您的帮助。
最佳答案
好的,所以我要为自己回答这个问题,也许它也会对某人有所帮助。我玩了很多次,问题出在 OSGi 上,老实说,我对它不太熟悉。
我最终发现你必须确保这些事情:
导出包:common.audit.sink.impl.log4j2.*
导入包:*
片段主机:org.apache.logging.log4j.core
当然我的问题中提到的配置也是需要的。此后我没有收到任何错误,并看到如下痕迹:
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].
关于java - Log4j 2.8 无法在 OSGi 环境中加载自定义转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41938128/
我是一名优秀的程序员,十分优秀!