【问题标题】:Getting logging/debugging information out of Felix framework?从 Felix 框架中获取日志记录/调试信息?
【发布时间】:2016-01-21 17:55:09
【问题描述】:

我正在尝试 launch the Felix OSGI Framework 使用 AutoProcessor.process(...) 加载我的 OSGI 包。我已经使用felix.auto.deploy.dir 属性指定了包含捆绑包的目录。

当该目录为空时,我根本没有收到 Felix 的任何消息。当其中有捆绑包时,我会得到一个不太有用的堆栈转储。

如何告诉 Felix 框架输出日志/调试信息?我真正想要的是 AutoProcessor 在堆栈转储发生时告诉我它正在处理哪个包。

我尝试将felix.log.level 设置为 4;我尝试设置org.osgi.framework.FrameworkListenerorg.osgi.framework.BundleListener;我尝试用felix.log.logger 指定Logger;但菲利克斯仍然固执地沉默。

那么秘诀是什么?

【问题讨论】:

  • 我开始从felix.auto.deploy.dir 中一一删除捆绑包。但问题依然存在。调试器显示每次都发生相同的 - 未报告的 - 错误。所以我得出结论,这不是我使用的捆绑包的问题。我用谷歌搜索了错误(我认为是BundleEvent.<init>(...) is missing)并找到了解决方案:我的依赖项中有两个org.osgi.cores(我想要的一个,org.apache.felix.prefs 包含的一个),所以我删除了一个,然后一切正常。好吧,实际上我继续处理下一个问题,但那是程序员的生活:-)
  • 我没有回答原来的问题。

标签: debugging logging osgi apache-felix


【解决方案1】:

如上所述删除重复的org.osgi.core 捆绑包后,我再次尝试设置

  1. org.osgi.framework.FrameworkListener,
  2. org.osgi.framework.BundleListener,和
  3. org.osgi.framework.ServiceListener

在我创建的框架上。所有 3 种侦听器类型均已触发,我能够检查并记录作为参数传入的事件的信息。

【讨论】:

  • 你是怎么知道你有两个 OSGI 核心包的?
  • @treefrog 他们有不同的版本号:有一个我明确要求作为依赖项的核心,还有另一个作为其他东西的依赖项自动输入。
猜你喜欢
  • 2021-12-15
  • 2010-10-11
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 2019-02-21
相关资源
最近更新 更多