【问题标题】:Log4j under OSGI (Eclipse RCP)OSGI 下的 Log4j (Eclipse RCP)
【发布时间】:2011-03-01 04:20:21
【问题描述】:

经过多次测试,我得出结论,Log4j 在 OSGI 下无法正常工作。

我不直接使用 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

谁能指出我正确的方向?

谢谢。

【问题讨论】:

  • 更新!我找到了另一种选择:使用 winrar 编辑符合 OSGI 的 log4j 版本(从 SPRING 存储库获取),将 log4j 属性文件粘贴到 JAR 的根目录。将包导入您的插件 DEPENDENCIES,等等!每种方法都有其优点。 (不要忘记 Eugener 的重要提示,这使得一切正常:所有使用 log4j 的包都应该在其 Import-Package 属性中包含 org.apache.log4j)

标签: eclipse log4j osgi rcp


【解决方案1】:

您只需创建带有 log4j.properties 文件的 log4j 片段包

更新:一些需要寻找的东西:

  • 标题名称应为:Fragment-Host: log4j
  • log4j.properties 应该在 src 文件夹。
  • 所有使用 log4j 的包都应该有org.apache.log4j in 他们的Import-Package 属性

【讨论】:

  • 做到了。类路径中带有 log4j jar 的片段和片段根目录中的 log4j 属性。将片段导入主APP产品。没有成功...
  • Datanucleus Plugin 在“Import-Package”中没有 org.apache.log4j...此外,我无法将“Fragment-Host”设置为“log4j”,因为我需要指定“ HOST-Plugin”(我不能更改我的主项目的名称!)
  • 是的,是的,是的!一年照顾这个解决方案!非常感谢!你的提示是正确的。我必须编辑所有 MANIFEST 插件并将“org.apache.log4j”添加到 Import-Package 部分(winrar 将清单保存到 JAR 中做得很好)。片段标头与主机插件相关,并且运行良好!再次感谢!
  • 很难说...可能重复配置,但不确定
  • 发现问题:必须设置“additivity”属性(为false),否则日志将“添加”到“父”类别。
【解决方案2】:

对于登录 OSGi,您应该查看 OSGi 日志服务。这篇文章很好地解释了一个很好的方法:http://blog.kornr.net/index.php/2008/12/18/osgi-logging-putting-it-all-together

你也可以看看 Pax-Logging:http://wiki.ops4j.org/display/paxlogging/Pax+Logging

【讨论】:

  • 目的不是为了创建日志服务,而是为了给第三方插件日志...
  • 确保您的 OSGi 平台中的 bundle log4j ACTIVE。 (将它放在类路径中是不够的)然后您可以根据需要对属性文件使用片段方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2018-09-09
相关资源
最近更新 更多