ben*_*min 4 java logging components osgi declarative-services
我正在使用OSGi和声明性服务(DS),目前正在考虑如何正确处理日志记录。由于无论如何我都在使用DS,因此使用OSGi服务纲要中指定的LogService作为强制性服务参考似乎很自然。我已经在ekkes角落和nogunners的博客上阅读了很多网络文章,但是我仍然不清楚:
如何区分不同的服务组件(或使用分解因子的组件时不同的服务组件实例)?
如果我看一下使用Logback的LogListener的nogunners实现,他将使用bundlecontext的Bundle-Id来区分它们。好的,到目前为止。但是,我将如何区分服务组件?LogService对象自然包含对BundleContext的引用,但是(看着LogService接口)ServiceReference必须由用户(实际记录某些内容的用户)本身提供吗?这对我来说似乎很脆弱。为什么框架在交付BundleContext时不能交付它?
当我在讨论它时,为什么OSGi规范使用详细logger.log(LogService.LOG_INFO,...)而不是准标准logger.info(...), logger.warn(..)等?是否有某些特定原因?
没有记录组件ID的标准方法,您必须将其嵌入消息中。
OSGi日志服务已有14年历史了……决定不对其进行升级,因为周围已经有太多(太多)的日志记录系统。
查看http://team.ops4j.org/wiki/display/paxlogging/Pax+Logging,它们将流行的记录器与OSGi集成在一起(两种方式)。