2012-02-06 2 views
0

実行時にlog4jのファイルアペンダファイル名を変更します。実行時に同じアペンダーの新しいファイルにlog4jファイルアペンダーの古いファイルの内容を取得する方法はありますか?

今、私は前のファイルの内容をアペンダーの新しいファイルに入れたいと思います。

誰かがこれを行う方法を教えてもらえますか?

当初、私のようにlog4j.propertiesを持っている:私が最初にやる、私のプログラムでは

#log4j.appender.H.File='/home/g/connector/logs/'Y'_H.log' 
#log4j.appender.H.File=/home/g/connector/logs/H.log 
log4j.appender.H.File=/home/g/${logNameSuffix}.log 

Date date = new Date(); 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd.HH:mm:ss"); 
    formattedDate = "jam" + formatter.format(date) + "_" + port; 
    System.setProperty("logNameSuffix", formattedDate); 
    PropertyConfigurator.configure(otherArgs[1]); 

その後再負荷として:

私が欲しいもの
String logName = formattedDate; 

    System.clearProperty("logNameSuffix"); 
    System.setProperty("logNameSuffix", logName); 

    LogManager.resetConfiguration(); 

作成された新しいログは古いログの内容を取得する必要があります。

log4jで可能ですか?

おかげで、 JJ

+0

なぜですか?そのようなものは、タイムスタンプ付きのファイル名を作成するという目的を破るものであり、コマンドラインでのファイル連結を処理するのと同じくらい簡単です。 –

+0

これはプログラムの呼び出し時であるため、私はログファイル名を持っていません。しかし、私はその名前でログを作成し、この新しいログファイル内の以前のすべての内容を取得したときに、いつかexectuonでファイル名を取得します。 – user656189

答えて

0

私はあなたがてmanualyそれを行うべきだと思う:古いファイルの名前を変更して、プロパティをリセット:

copyFile(new File("old file"), new File("new file")); 

また、システムのプロパティを回避することができますcopyFile

を参照してください、とドンプロパティファイルを再読み込みしないでください:

((FileAppender) LogManager.getRootLogger().getAppender("File")).setFile("new file"); 
関連する問題