2017-04-24 18 views
2

1つのクラスでは、ロギングがうまくいっていましたが、2番目のJavaクラスを追加した後、この2番目のクラスで2回ロギングしています。誰でも私を助けることができます、それを一度だけログにする方法。この問題はこのlog4j.xmlファイルにあるようです。なぜなら、appenderをコメントアウトすると、一度ログが記録されますが、log4jのコードを十分に変更したくないからです。 1クラス。Log4jをコンソールに2回印刷する

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- Appenders --> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="FILE" class="org.apache.log4j.FileAppender"> 
     <param name="file" value="/user/Dave/log.out"/> 
     <param name="immediateFlush" value="true"/> 
     <param name="threshold" value="debug"/> 
     <param name="append" value="false"/> 

     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n"/> 
     </layout> 
    </appender> 

    <logger name="com.asaqa.score"> 
     <level value="all"/> 
    </logger> 

    <!-- Root Logger --> 
    <root> 
     <priority value="error"/> 
     <appender-ref ref="console"/> 
    </root> 

</log4j:configuration> 

答えて

2

デフォルトでは、ロガーはアペンダーを継承し、各アペンダーはログエントリを作成します。あなたの場合、 "com.asaqa.score"ロガーはrootから継承します。これをオフにするには、additivityfalseに設定します。そして、あなたがアペンダも

<logger name="com.asaqa.score" additivity="false"> 
    <level value="all"/> 
    <appender-ref ref="console"/> 
</logger> 

を含めるためにあなたのロガーの設定を完了する必要があり、以下のエラーは、log4jの古いバージョンを使用している示唆しています。 log4j 2にアップグレードすることを検討してください。実際、それはrecommended by Apache themselvesです。

2015年8月5日、Logging Servicesプロジェクト管理委員会はLog4j 1.xの寿命が終わったと発表しました。発表の全文については、Apache Blogを参照してください。 Log4j 1のユーザーは、Apache Log4j 2にアップグレードすることをお勧めします。

some changes to the config syntaxがあることに注意してください。

+0

log4j:WARN logger(com.asaqa.score.crawler)のアペンダーが見つかりませんでした。 log4j:WARN log4jシステムを適切に初期化してください。 log4j:WARN詳細については、http://logging.apache.org/log4j/1.2/faq.html#noconfigをご覧ください。 –

+0

ああ。右。私の答えを編集しました... –

+0

コンソールには何も印刷されませんでした。 –

関連する問題