Jboss上的Logback在记录时会复制前缀和新行

问题描述 投票:5回答:1

我正在研究java web项目。我使用Wildfly 10.我想将它与logback一起使用。我做了一些配置:

pom.hml

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.24</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.1</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.1</version>
</dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
        <encoder>
            <pattern>[%date] [%thread] [%-5level] [%logger{36}] - %msg%n </pattern>
        </encoder>
    </appender>

    <logger name="com.pr" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

JBoss的部署,structure.xml

<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
</deployment>
</jboss-deployment-structure>

问题是我期待输出如下:

[2017-02-26 12:32:23,671] [ServerService Thread Pool - 179] [DEBUG] [o.springframework.jndi.JndiTemplate] - 查找JNDI

但是我得到了:

12:32:23,671 INFO [stdout](ServerService线程池 - 179)[2017-02-26 12:32:23,671] [ServerService线程池 - 179] [DEBUG] [o.springframework.jndi.JndiTemplate] - 仰望JNDI

所以看起来jboss在开头添加了一些内容。怎么预防呢?

java logging jboss wildfly logback
1个回答
4
投票

WildFly将System.outSystem.err包裹在记录器中。如果要使用写入任一流的appender或处理程序,则需要使用java.io.FileDescriptor.out(或err),或者需要为stdoutstderr创建记录器类别以及分配给记录器的新console-handler

/subsystem=logging/pattern-formatter=stdout:add(pattern="%s%n")
/subsystem=logging/console-handler=stdout:add(autoflush=true, target=System.out, named-formatter=stdout, level=ALL)
/subsystem=logging/logger=stdout:add(use-parent-handlers=false, handlers=[stdout], level=ALL)

上面的CLI脚本应该从记录器stdout中删除默认模式。

standalone.xml中的相应表示如下所示:

<console-handler name="stdout" autoflush="true">
  <level name="ALL"/>
  <formatter>
    <pattern-formatter pattern="%s%n"/>
  </formatter>
</console-handler>
<logger category="stdout" use-parent-handlers="false">
  <level name="ALL"/>
  <handlers>
    <handler name="stdout"/>
  </handlers>
</logger>
© www.soinside.com 2019 - 2024. All rights reserved.