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

时间:2009-09-18 13:23:47

标签: java log4j

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

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

这可能吗?如果是这样,怎么样?

4 个答案:

答案 0 :(得分:15)

可能这就是你要找的东西

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

答案 1 :(得分:4)

使用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 。这样,每次运行App时,Log4j都会创建带索引的新日志文件。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我认为这不可能来自Log4j。也许当您关闭应用程序时,您可以重命名.log文件,以便下次启动时创建新的日志文件。