Eclipse PDE 和 log4j.properties?

标签 eclipse log4j eclipse-pde

我创建了一个 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.

基于此信息:

http://jaikiran.wordpress.com/2006/07/05/i-get-log4jwarn-no-appenders-could-be-found-for-logger-message-2/

我需要将 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 个解决方案:

  1. 使用Eclipse的伙伴机制
  2. 将 log4j 属性文件放入 OSGi 片段中并将其托管在 log4j 包上

选项 2 是一个更好的解决方案,但如果您发现选项 1 更容易,那么就选择它。

关于Eclipse PDE 和 log4j.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573549/

相关文章:

java - 在堆转储中查询集合的工具

eclipse - 使用 Aptana 安装 Git

java - 用于 Eclipse 插件开发的自动化单元测试 (junit)

java - Equinox 启动器 Main.run() 在每个操作上调用

css - Eclipse CSS 自动完成/内容辅助不工作

eclipse - 在 Eclipse 中搜索源附件

java - 如何将 log4j 与多个类一起使用?

java - 使用 log4j2 时有没有办法为不同的包使用不同的模式?

maven-2 - 通过Maven获取构建日志文件

java - 使用 Junit 4.4 或更高版本运行 Eclipse Junit 插件测试——为什么没有检测到测试?