Jboss EAP 7记录格式

时间:2017-08-08 18:45:05

标签: java logging jboss-eap-7

我正在研究JBoss EAP 7.我使用自己的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.

我不排除为什么在排除子系统之后也采用了这种模式布局。 请帮我解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

JBoss EAP将stdoutstderr包装在记录器中。我假设您使用的ConsoleAppender会写入stdout。如果要避免使用标准模式前缀,则需要创建单独的console-handler并为其指定仅打印消息的模式。然后创建一个stdout记录器,并将新console-handler分配给use-parent-handlersfalse设置为/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) 。类似下面的CLI命令应该这样做。

php

如果您排除日志记录子系统,那么您也不需要这些依赖项排除项。日志记录子系统将这些依赖项添加到您的部署中。