log4j属性文件中的DailyRollingFileAppender无法工作。

17
我希望每天都有带有以年-日-月格式追加日期的日志文件。 当我使用DailyRollingFileAppender时,不会创建新的日志文件。 日志被写入同一个日志文件中。 此外,所提供的日期模式未被考虑。 创建的日志文件是LoggerFile.log,并且所有内容(即使在第二天)都写入此文件。
我正在使用log4j-1.2.17 jar包。 我在Java的Netbeans 7.3.1中开发。
是否有人使用过这个JAR包并遇到这样的问题?请帮忙!
以下是我使用的属性文件内容:
# Root logger option
log4j.rootLogger=ERROR,FILE,stdout

# Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender

log4j.appender.FILE.File=.//..//logs//LoggerFile.log

# Define the layout for file appender
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS zzz} %5p     %c{1}:%L - %m%n

log4j.appender.FILE.MaxFileSize=10MB


# Direct log messages to stdout
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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -  %m%n`

你尝试过使用绝对路径吗? - cbach
你找到解决方案了吗? - Amit Verma
3个回答

6

我有类似的日志文件轮换需求...(虽然这个问题很旧,但是我认为答案会帮助其他人)。

要点:

  1. 首先,我们可以避免使用 DailyRollingFileAppender。为什么?已经观察到 DailyRollingFileAppender 存在同步问题和数据丢失的情况。log4j extras companion 包括了可用于新部署的替代方案,并在 org.apache.log4j.rolling.RollingFileAppender 的文档中进行了讨论。参考:Daily Rolling File Appender 文档

  2. Apache extras log4j,建议使用 org.apache.log4j.rolling.RollingFileAppender基于时间轮换策略

  3. 可能会找到一个示例配置,用于基于时间的日志轮换。

希望这可以帮助到您。


3
首先,您的错误是因为DailyRollingFileAppender不支持属性MaxFileSize
然后,您可以尝试从DatePattern中删除字符'
尝试更改:
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd

to

log4j.appender.FILE.DatePattern=.yyyy-MM-dd

1
删除 ' 可能不是正确的解决方案。此模式应遵循 SimpleDateFormat 约定。特别地,您必须在一对单引号内转义文字。根据文档 - XoXo

-1

尝试添加另一行 log4j.appender.file.Append=true

完整代码如下

            # Root logger option
            log4j.rootLogger=DEBUG, file, stdout

            # Daily rolling file appender
            log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
            log4j.appender.file.File=logs/mylogs.log
            log4j.appender.file.Append=true
            log4j.appender.file.DatePattern='.'dd-MM-yyyy
            log4j.appender.file.MaxFileSize=10MB
            log4j.appender.file.MaxBackupIndex=100
            log4j.appender.file.encoding=UTF-8
            log4j.appender.file.layout=org.apache.log4j.PatternLayout
            log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n

我正在使用log4j 1.2.16版本。在使用你提供的属性时,我收到了以下警告:log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender.log4j:WARN No such property [maxFileSize] in org.apache.log4j.DailyRollingFileAppender. 这些属性应该包含在你的回答中吗? - stackoverflowuser2010
1
@stackoverflowuser2010 当您使用带有DatePattern的DailyRollingFileAppender时,无法使用MaxFileSize和MaxBackupIndex。只需删除这两个属性,警告就会消失。如果不使用DatePattern属性,则可以使用MaxFileSize和MaxBackupIndex。 - wolf97084
这不适合我。 - Thilina Sampath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接