我为log4j配置了以下输出csv日志文件。每次我的程序执行时,我希望通过覆盖不添加到日志文件来重新启动此日志文件。我以为我可以使用append=false
来实现这一目标。我知道我已经正确设置了log4j,因为其他日志输出正常,但这些是每日滚动日志,这些日志正在附加,这是期望的影响。
任何人都可以告诉我为什么append=false
似乎不起作用。我错过了另一种设置吗?
这是我的配置代码:
#Image output
log4j.logger.fetch.FetchDirectHolidays=debug, S
log4j.appender.S=org.apache.log4j.FileAppender
log4j.appender.S.File=xml\\logs\\FetchDirectHolidays.csv
log4j.appender.S.append=false
# Keep one backup file
log4j.appender.S.layout=org.apache.log4j.PatternLayout
log4j.appender.S.layout.ConversionPattern= %p , %m%n
我的配置有什么问题?
我忘了声明我的应用程序已经安排好了,我刚刚读到Append = false只有在整个应用程序关闭并重新启动时才清除日志文件。这没有用,因为我需要在每次内部进程执行时清除此日志文件。
答案 0 :(得分:6)
尝试
log4j.appender.S.Append=false
使用附加资本A
答案 1 :(得分:2)
# Define the root logger with appender file R
log4j.rootLogger = INFO, FILE,stdout
# Define the file appender (File)
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=C:/user/FileName.log
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the append to false, overwrite
log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%5p ] - %m%n
# Direct log messages to stdout (Console)
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p ] - %m%n