重启后丢失日志文件(log4j)

时间:2015-10-12 10:01:41

标签: java logging log4j jonas

我正在使用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>

请告诉我如何避免丢失日志文件。

0 个答案:

没有答案