我试图让上述设置正常工作。
这就是我所做的。
构建了一个包含slf4j.api_1.7.7.jar
,org.apache.logging.log4j.core_2.1.0.jar
,org.apache.logging.log4j.api_2.1.0.jar
,org.apache.logging.log4j.slf4j-impl_2.1.0.jar
的p2回购。
在我的目标平台上消耗了这个p2 repo并将其添加到父POM中。
将所有4个插件添加到我的Eclipse插件项目中,作为MANIFEST.MF中的依赖项。
在我的Eclipse插件的log4j2.xml
文件夹中创建了一个文件src/main/resources
。内容如下。
在private static final Logger logger = LoggerFactory.getLogger(MyClass.class)
MyClass
字段
名为MyClass
的{{1}}。
运行整个事件,我收到了一条错误消息:logger.info("Hi from logger")
所以似乎ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
正在运行?那log4j
可以"使用" slf4j
?正确?
log4j
显示在.classpath
下方。
那么问题是什么?
log4j2.xml:
log4j2.xml
的.classpath
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info" additivity="false">
<AppenderRef ref="console"/>
</Root>
</Loggers>
</Configuration>
答案 0 :(得分:0)
诀窍是使用Buddy Class Loading。
我在一个额外的插件中封装了log4j和slf4j等,我想通过其他插件来消费。当我在日志插件MANIFEST.MF
中注册 BuddyPolicy 时,它工作正常:
Eclipse-BuddyPolicy: registered
我还必须在插件中注册日志插件(此处:my.app.logging
)作为 Buddy (再次,在MANIFEST.MF
中)我希望能够&#34;消耗&#34;日志插件(即核心插件 - 包含我的IApplication类的插件):
Eclipse-RegisterBuddy: my.app.logging
这样,说得非常简单,插件&#34;分享&#34;一个类加载器,参见上面的Buddy Class Loading链接。