2017-02-08 1 views
0

amqps(RabbitMQ client) jarは、slf4j-log4j12の実装を含める必要があります。そうでない場合は、ログにNoSuchMethodErrorがスローされます。だから、私はpom.xmlに追加しました。 jboss 5.1でログが乱れたので、すべてのアプリケーションログはconsole/server.logファイルに記録されます。slf4j-log4j12を追加してserver.logにログを記録しました

私たちは、DOMAIN/logフォルダにあるすべてのアプリケーションに対してjbossデフォルトのログを使用します。

瓶がアプリに含まれていないエラー

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

これは、依存関係のよりはSLF4Jの異なるバージョンを引っ張っていることを意味します。クラスローダーがStaticLoggerBinder.getSingleton()メソッドを持たないバージョンをロードしています。依存関係がSLF4J使用Mavenの依存関係の異なるバージョンで引っ張っている確認するには:ツリー

正確なコマンドは

MVN依存性である

:木-DoutputFile =/somepath/file.txtを

最新のMavenを依存関係:

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

jbossのログを修正するにはどうすればよいですか?それは、私がpomに依存関係を置いた後に、スルーアウトによってslf4j 1.7.xが使用されているように見えます。 – Zeus

0

jbossからログ記録のデフォルトサービスを除外する必要があります。

これを実現するには、WEB-INFにJARまたはWAR、META-INFのEARを追加することができます。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> 

あなたのクラスパス(EARのために与えられた例)にxmlファイルを追加することを忘れないでください:次に、ロギングがあるべき

   <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に適切な依存関係を追加し、あなたのアプリで適切なロガーを使用するという条件で作業してください。

+0

こんにちはトム、私はまだJbossのデフォルトのログを使用したい、私はjbossコンソール/ server.logへのログインを停止するslf4jしたい – Zeus

+0

このソリューションは、動作からデフォルトのログを停止しません。あなたはいつもserver.logファイルを持っています。これは、選択したアプリケーションログだけを別のファイルに格納できるようにします。 – Tom

関連する問題