2009-03-07 11 views
0

Javaプログラムでlog4jを使用しました。私はそれを初期化しました:ログ内でのログの繰り返しのログ4j

BasicConfigurator.configure(); // logger configuration 
try { 
    logger.setLevel(Level.DEBUG); 
} catch (Exception e) { 
    System.out.println("Logfile not found"); 
} 

しかし、プログラムの実行中に私は1つではなく3つのログステートメントを取得します。たとえば、代わりに1行の

3 lines 
1047 [main] INFO ibis.Preproc.Ratings - Added AS TIMEZONE to tZones[0] = GMT-12:00 
1047 [main] INFO ibis.Preproc.Ratings - Added AS TIMEZONE to tZones[0] = GMT-12:00 
1047 [main] INFO ibis.Preproc.Ratings - Added AS TIMEZONE to tZones[0] = GMT-12:00 

1047 [main] INFO ibis.Preproc.Ratings - Added AS TIMEZONE to tZones[0] = GMT-12:00 

はこれを回避するためにlog4jに行われる余分な構成はありますか?

答えて

4

同様の現象が発生しましたが、Log4Jが複数回設定されていることが判明しました。 BasicConfiguratorを使うだけでなく、私が忘れてしまったlog4j.xmlファイルを使っています。クラスパスのどこかに追加のLog4J構成があるかもしれませんか?

2

まあ、あなたのプログラムの実行方法は表示されていません。

import org.apache.log4j.*; 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     BasicConfigurator.configure(); // logger configuration 
     Logger logger = Logger.getLogger(Test.class); 
     logger.setLevel(Level.DEBUG); 
     logger.info("Hello"); 
    } 
} 

実際にコードが3回実行されている可能性はありますか?

4

おそらく複数のアペンダーがあります。

与えられたロガーの各有効ロギングの要求はすべてのことロガーでアペンダだけでなく、上位の階層でのアペンダに転送されます:log4jのmanual(:アペンダおよびレイアウトセクション)を参照してください。

additivityフラグをfalseに設定してみてください。

0

私の場合は、BasicConfigurator.configure()を呼び出すたびに新しいアペンダーを追加していました。

私はそれがコンフィギュレーションをreseting解決:

BasicConfigurator.resetConfiguration() //reset first 
BasicConfigurator.configure() // then configure 

私ははっきりと何が起こっているのか理解していないが、それは確かに私の問題を解決していることを告白しなければなりません。

関連する問題