gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:30 31 4
gpt4 key购买 nike

项目设置:

  1. Logging-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/中的 jars 添加到类路径,并导出 logging-1.0.jar 中的包
  3. SomeBundle-1.2.jar
    • 包含一个 Activator 和 MANIFEST.MF
    • 依赖于 LoggingOSGI-1.0.jar

从 SomeBundle 访问 Logger 类是可行的,但是日志记录项目找不到 log4j.properties(log4j:WARN 找不到记录器的附加程序)。

问题:

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

最佳答案

大约六年前我最后一次尝试此操作时,解决方案变成了使用 log4j.properties 文件创建一个片段包,然后附加该片段(通过 Fragment-Host list header )到加载日志库的包(在您的例子中为“Logging-1.0.jar”)。看似如此简单的目标却需要大量的项目结构、构建时间和部署开销。

参见 OSGi Service Platform Core Specification 的第 3.14 节有关片段包的更多详细信息。

另一种想法是考虑使用 Configuration Admin Service 来指定磁盘上日志记录配置文件的路径,在您的包之外。这将需要扩充您的日志记录库以查找配置(或者,更好的是,监听),然后将该配置传递给日志记录实现。

如果不指出OSGi Service Platform Service Compendium 第 101 节中指定的 OSGi 日志服务,我也会失职。

关于java - 如何向 OSGI Bundle (Eclipse-Plugin) 提供 log4j.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12108705/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com