[英]Jboss EAP 7 Logging format
我正在使用JBoss EAP7。我正在使用自己的log4j2而不是Jboss日志记录。 因此,我将它们排除在Jboss-deployment-structure.xml文件中。
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
<!--
Prevent that the server add automatically dependencies -->
<!-- Exclude all logging dependencies so we can use log4j2 -->
<exclusions>
<module name="org.apache.commons.logging" />
<module name="org.apache.log4j" />
<module name="org.jboss.logging" />
<module name="org.jboss.logging.jul-to-slf4j-stub" />
<module name="org.jboss.logmanager" />
<module name="org.jboss.logmanager.log4j" />
<module name="org.slf4j" />
<module name="org.slf4j.impl" />
</exclusions>
</deployment>
在我的log4j2.xml文件中,我提到了以下模式布局。
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%p|%d|%c|%m|%n" />
</Console>
但是,当我最初启动应用程序时,会出现一个类加载,其中日志可以正确打印,如下所示。
DEBUG|2017-08-08 13:20:26,993|Default.com.test.StartClass|deleting directory: C:\eclipse\workspace\WEB-INF\templates
但是稍后,当Jboss服务器开始加载其子系统时,它将在我的实际模式之前添加stdout并添加其他内容。
13:39:06,997 INFO [stdout] (ServerService Thread Pool -- 87) INFO|2017-08-08 13:39:06,997|Default.com.test.AppXmlUnmarshaller|Unmarshalling took 342 milliseconds.
我不为什么在排除子系统之后也采用这种模式布局。 请帮助我解决此问题。
提前致谢。
JBoss EAP在记录器中同时包装了stdout
和stderr
。 我假设您正在使用ConsoleAppender
,它将写入stdout
。 如果要避免使用标准模式前缀,则需要创建一个单独的console-handler
并为其分配仅打印消息的模式。 然后创建一个stdout
记录器,并use-parent-handlers
设置为false
为其分配新的console-handler
use-parent-handlers
。 类似于以下CLI命令的命令应该可以执行此操作。
/subsystem=logging/pattern-formatter=msg-only-format:add(pattern="%s%n")
/subsystem=logging/console-handler=stdout:add(named-formatter=msg-only-format, autoflush=true, target=System.out)
/subsystem=logging/logger=stdout:add(handlers=[stdout], use-parent-handlers=false)
如果您要排除日志子系统,则也仅是一个FYI,就不需要那些依赖项排除。 日志记录子系统是将那些依赖项添加到您的部署中的工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.