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>
答案 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中添加正确的依赖项并在应用程序中使用正确的记录器,则日志记录应该正常工作。