次のアペンダーが追加されたログファイルがあります。
logger.addAppender(new FileAppender(new PatternLayout(),"log.txt"));
つまり、アプリケーションを実行するたびに、追加のログ情報が同じログファイルに追加されます。毎回ファイルを上書きするにはどうすればよいですか?
プロパティファイルでそのように宣言されたアペンダーがある場合:
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=file.log
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p %c - %m%n
次に、追加したいのは
log4j.appender.LOGFILE.Append=false
デフォルト値はですtrue
。
したがって、プログラムでアペンダーを宣言している場合は、を呼び出しますsetAppend(false)
。
XMLファイルに次の行を追加します。
<param name="Append" value="false" />
log4jでの奇妙なXML解析のため、<param>
要素はブロック内に表示される必要があることに注意してください(他のタイプの要素と混ざり合ってはなりません)。
たとえば、これは機能します。
<appender name="appender-log" class="org.apache.log4j.FileAppender">
<param name="File" value="efoimporter.log" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
しかし、これはしません(!)
<appender name="appender-log" class="org.apache.log4j.FileAppender">
<param name="File" value="efoimporter.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
<param name="Append" value="false" />
</appender>
Mattによる以前の回答は、プロパティファイルを使用することを除いて正しいです。プログラムによるアプローチを探している場合は、次のようにコードを変更して、追加モードを無効にすることをお勧めします。
logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**));
RollingFileAppenderを使用します。