【发布时间】:2013-11-05 00:49:10
【问题描述】:
我对如何在 Java EE OSGi 环境中正确设置记录器感到很困惑。以下是我的要求:
- 每个 EBA(捆绑包分组)只有 1 个日志文件
- 每个应用程序服务器有多个日志文件(由于多个 EBA)
- 不想执行 ClassLoader 魔术(如果我使用的库可以执行此操作,我只是不想编写它)
- 必须在一天结束时轮换日志文件,并且一次只能维护 7 个日志文件
- 最好不需要为每个 EBA 创建日志包。如果我告诉他们为每个应用程序编写自己的日志互操作性,其他开发人员都不会接受。
- 必须与 WebSphere Application Server 8.5.5 一起使用
首先,我尝试像其他 Java EE 应用程序一样在 log4j 之上使用 SLF4j,但是找不到我的 log4j.properties。我尝试了导入 SLF4j 的变体,但也遇到了将其加载到 1 个捆绑包中阻止它加载到另一个捆绑包中的问题。
接下来我查看了 PAX 记录器,但它似乎是全局记录,而不是每个 EBA。
尝试使用 OSGi LogService 会阻止我的包部署到 WebSphere,而且我不确定如何才能让它满足我的要求。
我现在可以看到的唯一选择是编写我自己的包来保存包的注册表 -> 日志文件(在客户端类上使用 FrameworkUtil.getBundle)并在其中实现完整的日志记录框架.如果这有类加载器隔离问题,那么可能会推送到 EJB 来进行实际的日志记录。我真的希望这不是我唯一的解决方案。
谁能指点我一些可以帮助我的文档??
谢谢!
【问题讨论】:
标签: java logging websphere osgi aries