【问题标题】:log4j properties DailyRollingFileAppender does not worklog4j 属性 DailyRollingFileAppender 不起作用
【发布时间】:2014-03-22 15:29:25
【问题描述】:

我想要带有附加日期的日志文件的每日日志,格式为 yyyy-dd-mm。当我使用 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`

【问题讨论】:

  • 你试过使用绝对路径吗?
  • 你找到解决办法了吗??

标签: java logging netbeans log4j rollingfileappender


【解决方案1】:

我对每日日志文件轮换有类似的要求..(虽然问题较旧,但认为答案会对其他人有所帮助)..

要点:

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

  2. Apache extras log4j,建议使用org.apache.log4j.rolling.RollingFileAppenderTime based rolling policy

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    首先你有一个错误,因为DailyRollingFileAppender 不支持属性MaxFileSize

    然后您可以尝试从DatePattern 中删除字符'

    尝试改变

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

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

    【讨论】:

    • 删除 ' 可能不是正确的解决方案。 This pattern should follow the SimpleDateFormat conventions. In particular, you must escape literal text within a pair of single quotes. ,根据document
    【解决方案3】:

    尝试添加另一行 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 将 DailyRollingFileAppender 与 DatePattern 一起使用时,不能使用 MaxFileSize 或 MaxBackupIndex。只需删除这两个属性,警告就会消失。如果不使用 DatePattern 属性,则可以使用 MaxFileSize 和 MaxBackupIndex。
    • 这不适合我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多