是否可以将 log4j 配置为在每次运行应用程序时创建一个新文件?

2022-09-02 10:26:14

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

我想把它保留在配置文件中,尽管如果我不能,我想当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


答案 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>

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


推荐