我正在使用log4j在我的java应用程序中显示日志。我使用DailyRolligFileAppender来滚动日志文件。它运行良好,直到我重新启动manuel。重新启动应用程序时,我将丢失最后一个日志文件。 log4j将获取此文件,覆盖它,放入两行日志,然后创建一个新文件并写入。所以我丢失了最后一个文件。
例如:我有
App.log.2015-10-09
App.log.2015-10-10(最后重启)
App.log.2015-10-11
App.log.2015-10-12
我们假设最后一次重启是在2015-10-10。如果我重新启动应用程序
2015-10-12,然后log4j将覆盖App.log.2015-10-10文件的内容,写入以下行:
的 的
应用程序 - 2015年10月12日10:18:31,960调试 - [PropertyMessageResources]
应用程序 - 2015年10月12日10:18:31,972调试 - [ActionServlet]完成此控制器servlet
应用程序 - 2015年10月12日10:18:31,977 INFO - [GraniteConfigListener] GraniteDS已停止 的
然后它将关闭此文件并创建一个通常名为App.log
的新文件,该文件将写入当前日志。
这是我的log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<!-- ********** APPENDERS DEFINITION (begin) ********** -->
<appender name="exp_FILE_APPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/data1/nom_app/logs/app.log" />
<param name="Append" value="true" />
<param name="DatePattern" value=".yyyy-MM-dd-HH-mm" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="nom_app - %d{DATE} %-5p %X{Batch}-%X{idSession}-%X{idRequete} [%c{1}] %m%n" />
</layout>
</appender>
<!-- Delia -->
<logger name="nom_package">
<level value="DEBUG" />
</logger>
<!-- appender -->
<root>
<level value="DEBUG" />
<appender-ref ref="exp_FILE_APPENDER" />
</root>
</log4j:configuration>
请告诉我如何避免丢失日志文件。