我正在尝试为我的项目学习 OSGi,并且遇到了Equinox 3.5 中引入的ExtendedLogService
和。ExtendedLogReaderService
是否有任何可用的教程或示例可以帮助我了解它的工作原理并在我的项目中使用它?
谢谢。
我还没有尝试过 ExtendedLogService。在查看接口时,它看起来类似于流行的日志框架。所以最大的问题是为什么不直接使用已建立的日志记录 API?使用 OSGi 日志服务会将您的所有代码绑定到 OSGi。已建立的框架可以在 OSGi 内部和外部工作。我可以建议在您的应用程序中使用 slf4j。要在 OSGi 中进行这项工作,您需要pax 日志框架。Pax 日志记录还支持其他大型日志记录 API,例如 log4j 和 java.util.logging。如果您正在做一个服务器项目,那么您可能还想看看Apache Karaf,它已经包含了 pax 日志记录和许多其他库。
好吧,我没有实现 ExtendedLogService,但我确实实现了org.osgi.service.log.LogReaderService
org.osgi.service.log.LogEntry , org.osgi.service.log.LogListener
我认为有帮助的。
关于教程我按照这个Logger Tutorial
我对 OSGi 中的日志记录功能的看法,
OSGi 中的日志结构
我特别避免使用 log4j 和 slf4j,因为它们不适用于 S0A 架构。虽然有可用的 PaxLogging 使 log4j 可以在 OSGi 环境下工作,但我认为将捆绑到 log4j 属性中的信息会破坏设计模式。有很多开发者质疑 OSGified env 中的 log4j。
LogListener (LogListnerImpl)
^
|
| Dispatches the LogEvent to LogListner
|
Log Service ---- Send a LogEvent --> LogReaderService (log.jar)
^
|
|
Bundle write a log
==================================================== ==========================
如果有经验的开发人员纠正我,我将不胜感激。