Logging 使用jul-to-slf4j,WildFly会记录未格式化的消息
我们的应用程序在WildFly中运行,但我们使用自定义日志记录,因此在Logging 使用jul-to-slf4j,WildFly会记录未格式化的消息,logging,slf4j,wildfly-8,jul-to-slf4j,Logging,Slf4j,Wildfly 8,Jul To Slf4j,我们的应用程序在WildFly中运行,但我们使用自定义日志记录,因此在jboss deployment structure.xml中有以下几行代码: <exclude-subsystems> <subsystem name="logging"/> </exclude-subsystems> 最近,我添加了另一个库,它使用java.util.logging而不是SLF4j,所以它的日志将直接转到stdout。为了解决这个问题,我添加了另一个依赖项: com
jboss deployment structure.xml
中有以下几行代码:
<exclude-subsystems>
<subsystem name="logging"/>
</exclude-subsystems>
最近,我添加了另一个库,它使用java.util.logging
而不是SLF4j,所以它的日志将直接转到stdout。为了解决这个问题,我添加了另一个依赖项:
compile 'org.slf4j:jul-to-slf4j:1.7.12'
并在应用程序初始化代码中添加了以下两行Java代码:
SLF4JBridgeHandler.removeHandlersForRootLogger ();
SLF4JBridgeHandler.install ();
现在,该库的日志也很好
但是,出现了另一个问题:现在WildFly消息也被写入我们的日志(似乎它也使用java.util.logging)。这并没有那么糟糕(即使我们更喜欢将应用程序日志和Web服务器日志分开),但它们是非格式化的,带有未转换的占位符。例如,在添加之前,WildFly将记录此消息:
[…]UT005023:对/Main.html的异常处理请求
但现在我看到的是:
[…]UT005023:对%s的异常处理请求
我是否需要添加一些额外的配置,以便
jul-to-slf4j
可以正确格式化消息?或者使用参数处理消息是否存在一些基本限制?Hmmm。。。看起来Wildfly(当然是版本8+)使用JBoss日志记录。据我所知,Jboss日志是另一个日志包装器
必须将其配置为推至7月
从我对源代码的阅读来看,它似乎也支持推进slf4j
因此,您应该研究如何让Jboss在wildfly中登录到slf4j。您是否想过使用这里描述的日志配置文件: 清单版本:1.0 日志记录配置文件:EJB
SLF4JBridgeHandler.removeHandlersForRootLogger ();
SLF4JBridgeHandler.install ();