2017-07-28 13 views
1

私はlog4jに慣れていないので、助言が必要です。私はMavenを使ってJavaプロジェクトを持っています。 私の設定では、1日に1つのログファイルしか作成できません。 これで、アプリケーションを2回連続して実行すると、2回目の実行でログファイルが壊れてしまいます。 私は最初の実行からログを持っていることはありません。 私はアプリケーションを実行するたびに新しいログファイルを取得したいと考えています。私は私のpom.xmlファイルでのlog4jの依存を持ってlog_total_20170728.txtJavaアプリケーションを2回連続して実行すると、2回目の実行でログファイルが破損する

それはという名前のログファイルを生成し

java -cp .;MyProject.jar com.data.utils.project.main.Main > .\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%.txt

この

は、私は、コマンドラインを介して自分のアプリケーションを実行する方法です

以下は私のlog4j.xmlの内容です。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 
<log4j:configuration> 
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="logfile" class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="log/log_total.log" /> 
     <param name="MaxFileSize" value="1000KB" /> 
     <param name="MaxBackupIndex" value="5" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ISO8601} %-5p %C{2}:%L - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <priority value="INFO"/> 
     <appender-ref ref="stdout" /> 
    </root> 
</log4j:configuration> 

答えて

0

実行するたびに新しいログファイルを取得するには、各ログファイル名が何らかの方法で一意でなければならないため、上書きされません。最も簡単な方法は、ログのファイル名にタイムスタンプを追加することです。結果のログファイル名は次のようになります

java -cp .;MyProject.jar com.data.utils.project.main.Main > 
.\log\log_total_%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%.txt 

log_total_20170728_15140437.txt 
次の変更は、ログファイル名に時間、分、秒、ミリ秒を追加します
関連する問題