【问题标题】:log4j - one file per runlog4j - 每次运行一个文件
【发布时间】:2020-06-19 14:05:59
【问题描述】:

我为 log4net(log4net one file per run) 找到了类似的问题,但我正在努力将其转换为 log4j.properties 文件格式。模式只是没有得到应用:

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File = logs/log-%d{yy/MM/dd HH:mm:ss}.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
...

我知道这里出了什么问题,但我不知道如何解决它。

【问题讨论】:

标签: java scala log4j


【解决方案1】:
【解决方案2】:

您需要使用 RollingFileAppender 并将 RollingStyle 设置为 Date。所以配置看起来像

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.RollingStyle=Date
log4j.appender.file.DatePattern=yy-MM-dd_HH-mm-ss
log4j.appender.file.StaticLogFileName=false
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

我认为不能在日期模式中使用斜杠或冒号,因为这些不是文件名中可能出现的字符。

请注意,这实际上会每秒创建一个新的日志文件,这与您在问题标题中要求的内容不匹配。如果你真的想要每次运行都有一个新的日志文件,那么你应该将 RollingStyle 设置为 Once。但在这种情况下,您的文件名将不包含日期模式。

【讨论】:

    【解决方案3】:

    试试 RollingFileAppender

    log4j.rootLogger=debug, stdout, file
    
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=C:\\\\log4j-application.log
    log4j.appender.file.MaxFileSize=5MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    【讨论】:

    • 这将每 5mb 滚动一次新文件,而不是每个应用程序都启动,不是吗?
    • 每 5mb 滚动一次新文件
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2010-11-29
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多