2017-03-05 20 views
0

私は、INFOレベルでのみロギングを有効にしたいと思うa.jarというjarファイルがあります。このjarは、Apache HTTPクライアントを使用する別のjar、たとえばb.jarにも依存します。私は自分のアプリケーションを実行すると、私は、一人でこの形式でのApache HTTPクライアントからのものを含め、画面上のデバッグ出力の多くを見るにかかわらず、私はlog4j.propertiesに入れたものを:使用中のロガー設定を見つけることができません

[com.amazonaws.AmazonWebServiceClient] : Internal logging successfully configured to commons logger: true Ignored FQCN: org.apache.commons.logging.impl.SLF4JLocationAwareLog 

の生活のために私は、瓶がどこからその構成を取得しているのか理解できません。ここに私が試したことがあります。 1.だけはA.jarのメイン/リソースにlog4j.propertiesを追加しましたDIR 2.追加されただけb.jarのメイン/リソースへのlog4j.properties DIR 3.削除log4j.properties

いくつかで私を助けてくださいロギング設定がどこから取得されるかについての入力。 A.jar

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.15</version> 
    <scope>compile</scope> 
</dependency> 

Here'reポンポン抽出ここで私はあなたがthis “Apache HTTP client”を意味することを前提とb.jar

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

答えて

0

のための抽出物ですか?その場合、Log4Jのログ設定はHttpClientのログ出力には影響しません。後者はSLF4JもLog4Jも使用しないからです。 this POMからわかるように、HttpClientはログ出力としてApache Commons Loggingを代わりに使用します。

あなたの目標は、すべてのCommons Logging出力をSLF4J経由でLog4Jにリダイレクトすることです。これには2つのステップが必要です。

  1. Commons Logging用のSLF4Jブリッジを追加します。
  2. ブリッジがCommons Loggingの代わりに使用されていることを確認してください。

hereが追加されます。ブリッジが実際に使用されていることを確認するには、exclude the original Commons Logging JARにお勧めします。あなたは、プロジェクトBのための以下の新しい/更新依存関係を持つ両方のステップを達成することができるはずです。

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.5.3</version> 
    <exclusions> 
    <exclusion> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.24</version> 
</dependency> 

それはSLF4J(お使いのバージョンのようですので、私は、最新のSLF4Jのバージョン1.7.24でjcl-over-slf4jブリッジを追加しました1.7.7)は、Commons Logging 1.2をサポートしていないようですが、HttpClient(少なくともバージョン4.5.3のもの)で使用される可能性があります。

は(私はこれをテストしていないことに注意してください。しかし、最終的な解決策は、少なくとも説明したアプローチとかなり類似しているべきである。)

0

thisを見ると、それはアマゾンのSDKの瓶の1のように思える場所です

これは、Apacheのコモンログを使用しており、プロジェクトで行っている設定がslf4jに対して行われているため、何も影響しません。

関連する問題