添加slf4j-log4j12开始记录到server.log

时间:2017-02-08 23:03:26

标签: java maven jboss slf4j

amqps(RabbitMQ client) jar要求包含slf4j-log4j12的实现,否则它会在日志中抛出NoSuchMethodError。所以,我把它添加到了pom.xml。现在日志记录在jboss 5.1中搞砸了,所有应用程序日志现在都登录到console / server.log文件中。

我们对DOMAIN / log文件夹中的所有应用程序使用jboss默认日志记录。

当jar未包含在应用中时出错

Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;

POM

<dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>4.0.2</version>
        </dependency>
         <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>

        </dependency>

2 个答案:

答案 0 :(得分:0)

这意味着不仅依赖于拉动不同版本的slf4j。类加载器正在加载没有StaticLoggerBinder.getSingleton()方法的版本。要检查哪些依赖项在不同版本的slf4j中使用,请使用maven dependency:tree

确切的命令是

mvn依赖:tree -DoutputFile = / somepath / file.txt

最新的maven依赖是:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
</dependency>

答案 1 :(得分:0)

您必须从jboss中排除日志记录默认服务。

要实现这一点,您可以在WEB-INF中为JAR或WAR添加名为jboss-deployment-structure.xml的文件,在META-INF上为EAR添加。

您可以在其中添加:

<?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>
不要忘记将xml文件添加到类路径中(为EAR提供示例):

               <plugin>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>2.8</version>
                    <configuration>
                        <defaultLibBundleDir>lib</defaultLibBundleDir>
                        <earSourceDirectory>ear</earSourceDirectory>
                        <earSourceIncludes>META-INF/*</earSourceIncludes>
                        <modules>
                            <webModule>
                                <groupId>your group id</groupId>
                                <artifactId>your artifact</artifactId>
                                <contextRoot>/yourcontext</contextRoot>
                            </webModule>
                        </modules>
                    </configuration>
                </plugin>

如果您在pom.xml中添加正确的依赖项并在应用程序中使用正确的记录器,则日志记录应该正常工作。