【问题标题】:write logs to oldest file in directory将日志写入目录中最旧的文件
【发布时间】:2014-02-12 09:39:40
【问题描述】:

我想对我的应用程序的日志记录做一些调整... 我需要一些帮助来增强我在主要方法中的以下内容:

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 并为feb 12 写入新的。

如何在我所拥有的基础上使用java.util.logging 来实现这一点。不幸的是,我无法配置log4j 属性并且只想使用java.util.logging

【问题讨论】:

  • 如果它总是写入最旧的文件,那么不会只创建一个文件吗?或者您的意思是仅在创建 6 个文件后才写入最旧的文件?

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


【解决方案1】:

唯一的近似是执行以下操作:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 2020-04-09
    • 2012-04-06
    • 2023-03-31
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2012-01-16
    相关资源
    最近更新 更多