与这个问题有关。Glassfish 似乎正在将 slf4j 导出到我的应用程序中并覆盖我的日志记录解决方案。我是否可以覆盖 Glassfish 的日志记录并让我自己的日志记录解决方案优先?经过搜索,我只找到了使用logging.properties修改日志的方法。
我并没有与我当前的实现结婚,但我有兴趣让它发挥作用。
谢谢。
正如另一个答案中所建议的那样,尝试将 GlassFish 配置为在委托之前首先使用子类加载器。在sun-web.xml
:
<sun-web-app>
<class-loader delegate="false"/>
</sun-web-app>
但如果这可行,这更像是一个真正的解决方案的解决方法,您的应用程序不应该被bean-validation.jar和weld-osgi-bundle.jar的 SLF4J 绑定污染(至少我相信如此)。你也许应该提出一个问题。
更新:对于档案,建议的解决方法不起作用。但我无法重现该问题。
简短的回答是,Glassfish 做了一些讨厌的记录器调整,将 System.out 和 System.err 重定向到它自己的日志。我没有设法阻止它这样做,但我找到了一种将所有服务器和应用程序日志消息收集到单个 slf4j 日志中的方法,方法是在类路径中足够早地放置 slf4j 库并编辑 Glassfish 的 logging.properties。
有关详细答案,请参阅此博客文章。