如何为OSGI Bundle(Eclipse-Plugin)提供log4j.properties?

Abs*_*ind 5 java osgi log4j eclipse-plugin slf4j

项目设置:

  1. 记录-1.0.jar
    • 包含一个使用slf4j/log4j的Logger.class
    • 取决于slf4j-api.jar,slf4j-log4j.jar,log4j.jar
  2. LoggingOSGI-1.0.jar
    • 包装日志记录项目
    • 包含一个Activator和MANIFEST.MF
    • lib /包含logging-1.0.jar,slf4j-api.jar,slf4j-log4j.jar,log4j.jar
    • 将来自lib /的jar添加到类路径中,并导出来自logging-1.0.jar的包
  3. SomeBundle-1.2.jar
    • 包含一个Activator和MANIFEST.MF
    • 依赖于LoggingOSGI-1.0.jar

从SomeBundle访问Logger类可以正常工作,但是日志记录项目找不到log4j.properties(log4j:WARN没有为logger找到appender).

问题:

  • 我在哪里放置log4j.properties?
  • 我有什么想法可以试试吗?(已经尝试过:不同的目录,Eclipse-Buddies,-Dlog4j.configuration作为VM参数)
  • 将是一个扩展点,它告诉日志记录项目log4j.properties的位置,一个很好的解决方案?

seh*_*seh 7

大约六年前我上次尝试这个时,解决方案转而使用log4j.properties文件创建一个片段包,然后将该片段(通过清单头)附加到加载日志库的包("Logging" -1.0.jar,"在你的情况下).对于看似简单的目标而言,感觉就像很多项目结构,构建时间和部署开销一样.Fragment-Host

有关片段包的更多详细信息,请参阅OSGi服务平台核心规范的第3.14节.

另一个想法是考虑使用配置管理服务来指定磁盘上的日志记录配置文件的路径.这将需要扩充您的日志库以查找配置(或者,更好地,监听一个),然后将该配置传递给日志记录实现.

我也不能指出OSGi服务平台服务汇编第101节中规定的OSGi日志服务.