2011-03-01 89 views
9

经过多次测试,我断定Log4j不能在OSGI下工作。OSGI(Eclipse RCP)下的Log4j

我不直接使用Log4j,但我需要第三方插件来登录它。

我做了一个普通的JAVA项目,一切都很好,但在PLUGIN开发下没有任何工作。

我在我的Classpath中有log4j jar,甚至尝试了一个符合Spring标准的OSGI Log4j,并将它包含在Dependencies下。什么都没有

我已经试过这一些没有成功的方法: http://swik.net/Eclipse/Planet+Eclipse/Raja+Kannappan:+Eclipse+RCP+-+Converting+Dependencies+to+OSGi+Bundles/drqpf

,不能充分认识到这一个: http://www.eclipsezone.com/eclipse/forums/t99588.html

任何人都可以点我在正确的方向?

谢谢。

+0

更新!我找到了一个替代方案:用winrar编辑OSGI兼容版本的log4j(从SPRING存储库获取),将log4j属性文件粘贴到JAR的ROOT。将插件导入插件依赖等等!每种方法都有其优点。 (不要忘记Eugener的重要提示,它使所有的工作:使用log4j的所有包应该在其导入包属性中具有org.apache.log4j) – marcolopes 2011-03-03 11:10:23

回答

14

您只需要创建log4j片段包,其中包含中的log4j.properties文件。

UPDATE:有些事情要寻找:

  • 头名应该是:Fragment-Host: log4j
  • log4j.properties应该在 src文件夹中。
  • 所有这些使用log4j的束应具有org.apache.log4j在 他们Import-Package属性
+0

做到了这一点。片段根目录中的类路径和log4j属性中带有log4j jar的片段。将主要APP产品导入片段。没有成功... – marcolopes 2011-03-02 14:50:44

+0

请参阅更新... – 2011-03-02 15:51:39

+1

Datanucleus插件在“Import-Package”中没有org.apache.log4j ...另外,我无法将“Fragment-Host”设置为“log4j”,因为我需要指定“HOST-Plugin”(并且我不能更改我的主项目的名称!) – marcolopes 2011-03-02 20:26:46

1

对于OSGi的记录,你应该看一看的OSGi日志服务。下面是文章,解释相当不错的好方法:http://blog.kornr.net/index.php/2008/12/18/osgi-logging-putting-it-all-together

您还可以看看PAX-记录:http://wiki.ops4j.org/display/paxlogging/Pax+Logging

+0

目的不是为了创建日志服务,而是为了第三方插件来记录日志... – marcolopes 2011-03-02 14:51:29

+0

确保您的OSGi平台中包含log4j ACTIVE软件包。 (让它在classpath中是不够的)然后,如果需要,您可以使用fragment方法来获取属性文件。 – RaduK 2011-03-02 16:04:16