【问题标题】:Is it possible to configure log4j to create a new file with every run of the application?是否可以配置 log4j 以在每次运行应用程序时创建一个新文件?
【发布时间】:2010-11-29 11:51:00
【问题描述】:

例如,我第一次运行应用程序时(或在我清除 /logs 目录后立即),我希望 log4j 将应用程序的日志写入一个名为 log.0 的文件。然后,我退出应用程序并重新启动它,我希望将日志写入 log.1。以此类推。

我想将它保存在配置文件中,但如果我不能,我想我总是可以在设置 log4j 时在我的应用程序中这样做。

这可能吗?如果有,怎么做?

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    也许这就是你要找的东西

    http://veerasundar.com/blog/2009/08/how-to-create-a-new-log-file-for-each-time-the-application-runs/

    **编辑:**我还有一个解决方案! 但不知道它是否有效,但你可以尝试 http://www.mail-archive.com/log4cxx-user@logging.apache.org/msg02132.html

    【讨论】:

    • 是的,我认为创建自定义附加程序是可行的方法。
    • 请描述如何做到这一点。不链接到 will-404-soon 随机博客。
    【解决方案2】:

    使用 log4j2 的解决方案:

            <RollingFile name="RollingFile" fileName="${log-path}/GScraper.log"
                     filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log">
            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="32 MB" />
                <OnStartupTriggeringPolicy/>
            </Policies>
        </RollingFile>
    

    注意 filePattern 中的 OnStartupTriggeringPolicy%i。这样,Log4j 将在您每次运行应用程序时创建带有索引的新日志文件。

    【讨论】:

      【解决方案3】:

      请参阅uniquely named files (by timestamp) 上的 logback 手册。

      【讨论】:

      • 这不是另一个框架的答案,而不是 log4j 本身吗?至少它对我来说不适用于 log4j:` log4j:WARN Continuable parsing error 11 和 column 61 log4j:WARN 必须声明元素类型“时间戳”。 log4j:WARN 持续解析错误 18 和第 16 列 log4j:WARN 元素类型“appender”的内容必须匹配“(errorHandler?,param*,layout?,filter*,appender-ref*)”。 '
      【解决方案4】:

      在我的脑海中,我认为使用 Log4j 是不可能的。也许当您关闭应用程序时,您可以重命名 .log 文件,以便下次启动时创建一个新的日志文件。

      【讨论】:

      • 如果是这样的话,我有点失望。 log4j 满足了我的所有需求,并且表现良好。我只是希望能够按执行而不是按日期或文件大小对日志进行分组。
      • 我曾经为 log4j 写了一个额外的适配器(长篇故事),源代码非常容易阅读并且有据可查,确保你不会花很长时间来实现这个功能:-)
      猜你喜欢
      • 2012-01-26
      • 1970-01-01
      • 2017-07-11
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多