每个SLF4J日志消息都包含嵌套消息

时间:2015-06-11 10:10:30

标签: java jboss slf4j jboss5.x

我使用JBoss 5.2,每当我记录某些内容时,slf4j都会输出一个嵌套的日志消息,例如

private final static Logger logger = LoggerFactory.getLogger(MyClass.class);

...

logger.info("FOOBAR")

将导致日志消息:

2015-06-11 09:54:37,154 INFO  [STDOUT] (quartzScheduler_Worker-1) 09:54:37,154 INFO  [MyClass] FOOBAR

内部消息是正确的,为什么外部说记录类是STDOUT?

非项目类(库类)日志消息看起来很好,例如,

2015-06-11 09:54:16,538 FINE  [javax.activation] (quartzScheduler_Worker-1) MailcapCommandMap: load DEF

这是我的log4j设置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">    
    <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
        <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
        <param name="File" value="server.log"/>
        <param name="Append" value="true"/>
        <param name="Threshold" value="DEBUG"/>

        <param name="DatePattern" value="'.'yyyy-MM-dd"/>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
        </layout>
    </appender>

    <root>
        <priority value="DEBUG"/>
        <appender-ref ref="FILE" />
    </root>
</log4j:configuration>

1 个答案:

答案 0 :(得分:1)

我通过排除JBoss版本的slf4j解决了这个问题。我仍然有SLF4J的多个版本,但它似乎有效。

2015-06-11 12:30:09,540 ERROR [STDERR] (main) SLF4J: Class path contains multiple SLF4J bindings.

要排除JBoss slf4,我创建了WEB-INF / jboss-deployment-structure.xml文件,其中包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.slf4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

此网站非常有用http://ankitagarwal.com/wordpress/2012/05/20/using-your-own-instance-of-log4j-in-your-war-on-jboss-as-7-x-2/