我创建了一个 eclipse PDE 项目,并使用 slf4j-api 和 slf4j.log4j12 bundle 添加了 log4j 作为依赖项。在类(class)中我创建了记录器:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyTest {
private static final Logger logger = LoggerFactory.getLogger(MyTest.class
.getName());
public void tt() {
logger.info("log-test");
}
}
但是当我使用 OSGI 启动配置运行 PDE 项目时,我收到警告:
log4j:WARN No appenders could be found for logger (loggin_test.MyTest).
log4j:WARN Please initialize the log4j system properly.
基于此信息:
我需要将 log4j.properties 放入 PDE 类路径中。我尝试将其放在 PDE 项目的根目录中并添加:
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
log4j.properties
到 build.properties Pane 。但我仍然收到同样的警告。我应该将 log4j.properties 文件放在 PDE 项目中的什么位置?
编辑:我也尝试将其添加到/src 文件夹,但没有帮助。
最佳答案
您遇到了 OSGi 的第一个资源可见性问题。请记住,在 OSGi 中, bundle 必须显式定义它们的依赖关系。您的问题是您的包定义了 log4j 属性文件,但 log4j 包必须读取它。但是 log4j 包对您的包一无所知(也不应该知道)。
以下是该问题的 2 个解决方案:
- 使用Eclipse的伙伴机制
- 将 log4j 属性文件放入 OSGi 片段中并将其托管在 log4j 包上
选项 2 是一个更好的解决方案,但如果您发现选项 1 更容易,那么就选择它。
关于Eclipse PDE 和 log4j.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573549/