将日志写入目录中的最旧文件

时间:2014-02-12 09:39:40

标签: java file logging file-io java.util.logging

我想对我的应用程序的日志记录进行一些调整... 我想要一些帮助,以便在主要方法中增强我的内容:

public static void main(String[] args) {
        try {
            Date date = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Handler h = new FileHandler("../logs/MyLogFile_"
                    + sdf.format(date) + ".log", true);
            h.setFormatter(new SingleLineFormatter());
            h.setLevel(Level.ALL);
            logger.setUseParentHandlers(false);
            logger.addHandler(h);
        }

        //...   
} 

每次运行应用程序时,它都会创建一个带有日期戳的日志文件。但我希望在我的Unix目录中实现类似的功能:

-rw-r--r-- 1 r787848 dev  45271 Feb  4  11:31 MyLogFile.log.06
-rw-r--r-- 1 r787848 dev  45308 Feb  5  11:36 MyLogFile.log.05
-rw-r--r-- 1 r787848 dev  44336 Feb  6  06:50 MyLogFile.log.04
-rw-r--r-- 1 r787848 dev  44379 Feb  7  08:41 MyLogFile.log.03
-rw-r--r-- 1 r787848 dev  44409 Feb  10 08:45 MyLogFile.log.02
-rw-r--r-- 1 r787848 dev  44446 Feb  11 12:36 MyLogFile.log.01

我想定义一组让6个日志文件来捕获应用程序每日运行的日志记录。在记录时,我希望应用程序写入最旧的日志文件,因此在上面的实例中,在Feb 12 08:45上运行应用程序应清除MyLogFile.log.06并为{{1}写新的内容}。

如何在我拥有feb 12的基础上实现这一目标。很遗憾,我无法配置java.util.logging属性,只想使用log4j

1 个答案:

答案 0 :(得分:0)

唯一近似的做法是:

Handler h = new FileHandler("../logs/MyLogFile_"
                + sdf.format(date) + ".log", Integer.MAX_VALUE, 6, false);

请参阅:JDK-6350749 - 增强FileHandler以获得每日日志轮换功能。