是否可以在特定的GlassFish应用程序中使用SLF4J并仅为该应用程序配置SLF4J?我们目前正在努力解决GlassFish本身 安装了Hibernate的GlassFish在其lib目录中包含SLF4J API和记录器绑定这一事实.
我们的团队正在开发Java EE 6 Web应用程序.对于开发,应用程序部署在GlassFish 3.1.2上,尽管它应该尽可能便携.
我们决定使用SLF4J来记录应用程序消息.根据消息级别,应用程序必须以不同方式处理某些日志消息,因此必须能够自己配置日志记录后端 - 而不是在应用程序服务器中配置日志记录.
不幸的是,GlassFish 3.1.2 在其lib文件夹中包含slf4j-api-1.5.8.jar和slf4j-jdk14-1.5.8.jar.这可以防止我们的应用程序使用slf4j-api-1.7.5.jar和slf4j-simple-1.7.5.jar(后者将最终被另一个绑定替换).
有没有办法告诉GlassFish在考虑自己之前考虑应用程序lib(以便使用正确版本的API)以及确保使用提供SLF4J绑定的应用程序的任何方法?
我们正在使用Eclipse进行开发,但我们没有使用Maven.到目前为止,我发现的大多数调整/解决方法都是指Maven中我们无法使用的配置.如果您可以提供任何Eclipse特定提示,那将是很棒的.在Eclipse项目的属性中,我已经配置了构建路径的顺序,以便Web App Libraries位于顶部.但不知何故,这似乎还不够.
非常感谢您的帮助!
更新1:为了让它暂时运行,我刚刚从GlassFish lib目录中删除了SLF4J库.然后,应用程序使用其自己提供的SLF4J库.但我不认为这是部署过程的解决方案,我不确定这是否会破坏GlassFish使用的任何东西(为什么库仍然存在于那里?),这对我们的开发团队来说不是一个实用的解决方案.
更新2:实际上不是 GlassFish,它包括干扰的SLF4J库开箱即用,但我通过更新工具安装的Hibernate JPA包.我们目前不需要Hibernate JPA,但是在某些时候可能会出现更改为Hibernate的要求,我们还希望保持应用程序可以轻松移植到安装了Hibernate JPA或其他包含SLF4J的软件包的应用程序服务器.我相应地更新了问题标题.如何解决干扰应用服务器和应用程序依赖性的一般问题?