Wildfly8 / jBoss wraps log logs (double prefix)
When Logback with standalone Wildfly8 all log messages seem to be captured by Wildfly logger:
21:13:18,808 INFO [stdout] (default task-4) 21:13:18.806 [default task-4] ERROR some.package.MyClass - Some message
21:13:18,810 INFO [stdout] (default task-4) 21:13:18.809 [default task-4] WARN some.package.MyClass - Some message
21:13:18,810 INFO [stdout] (default task-4) 21:13:18.810 [default task-4] INFO some.package.MyClass - Some message
21:13:18,810 INFO [stdout] (default task-4) 21:13:18.810 [default task-4] DEBUG some.package.MyClass - Some message
21:13:18,811 INFO [stdout] (default task-4) 21:13:18.811 [default task-4] TRACE some.package.MyClass - Some message
I want to omit the first part added by Wildfly so that the messages look something like this:
21:13:18.806 [default task-4] ERROR some.package.MyClass - Some message
21:13:18.809 [default task-4] WARN some.package.MyClass - Some message
21:13:18.810 [default task-4] INFO some.package.MyClass - Some message
21:13:18.810 [default task-4] DEBUG some.package.MyClass - Some message
21:13:18.811 [default task-4] TRACE some.package.MyClass - Some message
Does anyone know how to achieve this?
WEB_INF / classes / logback.xml:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.hibernate" level="ERROR" />
<logger name="org.jboss.logging" level="INFO" />
<root level="ALL">
<appender-ref ref="STDOUT" />
</root>
</configuration>
WEB-INF / JBoss deployment-structure.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="logging" />
</exclude-subsystems>
<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>
</jboss-deployment-structure>
Relevant information from pom:
<packaging>war</packaging>
<!-- JAVA EE -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- LOGGING -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
</dependency>
source to share
One solution is to add a log category stdout
and a special one handler
to your Wildfly / JBoss config file (for example standalone.xml
):
Like this:
<console-handler name="APP_CONSOLE">
<formatter>
<pattern-formatter pattern="%s%e%n"/>
</formatter>
</console-handler>
<logger category="stdout" use-parent-handlers="false">
<handlers>
<handler name="APP_CONSOLE"/>
</handlers>
</logger>
Don't forget use-parent-handlers="false"
, otherwise it inherits handlers from the root registrar.
source to share