Java 使用log4j清除文件?

Java 使用log4j清除文件?,java,log4j,text-files,appender,Java,Log4j,Text Files,Appender,im使用log4j写入具有以下文件属性的文件: log4j.rootLogger=DEBUG, FA #File Appender log4j.appender.FA=org.apache.log4j.FileAppender log4j.appender.FA.File=temp.ppr log4j.appender.FA.layout=org.apache.log4j.PatternLayout log4j.appender.FA.layout.ConversionPattern= %m%

im使用log4j写入具有以下文件属性的文件:

log4j.rootLogger=DEBUG, FA

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=temp.ppr
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern= %m%n
我的问题是,在每次运行我的程序时,我都想清除文件“temp.ppr”,然后用lo4j高效地写入它?或者你会推荐其他解决方案吗


谢谢

您是否已尝试将上的
append
属性设置为
false

log4j.appender.FA.append=false

您是否尝试将上的
append
属性设置为
false

log4j.appender.FA.append=false
您可以这样做:

log4j.appender.FA=org.apache.log4j.RollingFileAppender
log4j.appender.FA.MaxBackupIndex=1
然后在应用程序的启动代码中:

((RollingFileAppender)Logger.getRootLogger().getAppender("FA")).rollOver()
这样,对于程序的每次运行,现有日志都会移动到“temp.ppr.1”,而“temp.ppr”会重新启动。这样,您就可以始终拥有上一次运行的日志。

您可以这样做:

log4j.appender.FA=org.apache.log4j.RollingFileAppender
log4j.appender.FA.MaxBackupIndex=1
然后在应用程序的启动代码中:

((RollingFileAppender)Logger.getRootLogger().getAppender("FA")).rollOver()

这样,对于程序的每次运行,现有日志都会移动到“temp.ppr.1”,而“temp.ppr”会重新启动。这样,您就可以始终拥有上一次运行的日志。

我建议作为构建工具(ApacheAnt或Maven)的一部分来清除您不想要的文件。或者,如果您想保留备份,您可以使用我建议作为构建工具(ApacheAnt或Maven)的一部分的

来清除不需要的文件。或者,如果您想保留备份,您可以使用

我喜欢您的解决方案,但RollingFileAppender的问题是您必须绑定文件大小,而我无法在程序中确定此大小。如果我错了,请纠正我?@RanZilber:将大小设置为一个大得离谱的值(如1 TB)应该可以解决这个问题。但是,除非您的程序的主要目的是在日志文件中生成大量数据,否则您可能需要一个相当大的绑定。我喜欢您的解决方案,但RollingFileAppender的问题是您必须绑定文件大小,我无法在程序中确定此大小。如果我错了,请纠正我?@RanZilber:将大小设置为一个大得离谱的值(如1 TB)应该可以解决这个问题。但是,除非您的程序的主要目的是在日志文件中生成大量数据,否则您可能需要一个相当大的边界。我认为这应该是答案。我认为这应该是答案。