Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception 当捆绑包在osgi运行时引发异常时,如何通知我?(春分日)_Exception_Logging_Osgi_Eclipse 3.6_Helios - Fatal编程技术网

Exception 当捆绑包在osgi运行时引发异常时,如何通知我?(春分日)

Exception 当捆绑包在osgi运行时引发异常时,如何通知我?(春分日),exception,logging,osgi,eclipse-3.6,helios,Exception,Logging,Osgi,Eclipse 3.6,Helios,如果捆绑包在osgi中引发异常,堆栈跟踪将打印在osgi控制台上。如果捆绑包引发异常,我希望得到通知。我认为使用osgi日志记录服务可能会有所帮助。然而,我无法让它在太阳神下工作 问题是如果包在osgi Helios中抛出异常,如何通知我 或者,如果osgi日志记录可以工作,我如何让osgi日志记录在Helios中工作?正如我在谷歌上搜索到的,目前helios中显然没有集成osgi loggin服务的实现。我从包含包org.eclipse.equinox.log的eclipse站点下载了equ

如果捆绑包在osgi中引发异常,堆栈跟踪将打印在osgi控制台上。如果捆绑包引发异常,我希望得到通知。我认为使用osgi日志记录服务可能会有所帮助。然而,我无法让它在太阳神下工作

  • 问题是如果包在osgi Helios中抛出异常,如何通知我

  • 或者,如果osgi日志记录可以工作,我如何让osgi日志记录在Helios中工作?正如我在谷歌上搜索到的,目前helios中显然没有集成osgi loggin服务的实现。我从包含包org.eclipse.equinox.log的eclipse站点下载了equinox skd 3.6,但是我可以将它作为依赖项添加到插件中,或者在osgi运行时安装它

非常感谢您的帮助

您可以尝试,a-Pax日志提供了OSGi LogService等的实现,以及通用日志框架的包装器


您想这样做纯粹是为了记录/通知异常,还是有其他原因?如果是管理您自己的或包装好的代码,则可能是您想要的。

bundle只能在调用时抛出异常。这几乎总是在其他捆绑包调用某个已发布的服务时发生,或者因为该捆绑包收到来自框架的回调,例如
BundleActivator.start()

在第一种情况下,OSGi绝对无法知道发生了异常!服务调用是两个对象之间的直接方法调用,不受OSGi框架的代理或代理。因此,如果要了解异常,必须在调用代码中捕获它

在第二种情况下,回调的发生是因为某些bundle导致了回调。例如,一个bundle将被启动,因为另一个bundle名为
bundle.start()
。在这种情况下,从
BundleActivator.start()
方法引发的异常将被包装在调用代码可能捕获的
BundleException

因此,这实际上完全取决于您的代码,除非您有一些第三方bundle调用您的服务或启动/停止您的bundle(例如web控制台或类似GoGo的shell)。在这种情况下,这取决于第三方代码。在大多数情况下,它们应该向LogService发送消息,因此您应该将日志包安装到您的框架中


你说你不能安装日志包,但是你没有说为什么失败,错误消息是什么等等!如果需要帮助解决问题,则此类信息非常重要。

是的,无法知道捆绑包是否引发异常。事实上,我可以在helios中使用osgi日志。我从下载了EquinoxSKD3.6,将其解包并放入eclipse的dropins文件夹中。我的想法是,当包崩溃时,osgi日志包中LogReaderService的实现可能会以某种方式得到通知。