DailyRollingFileHandler ----文件应该每天轮换

时间:2010-03-18 04:20:14

标签: java logging java.util.logging

我们有一个要求,要求拥有一个从Java日志记录扩展的Handler,并允许每天轮换文件。

目前,Java util日志记录通过使用文件处理程序确实支持基于文件大小的轮换。它不支持每天轮换。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6350749

所以,我们正在寻找的是这样一个允许每日轮换的追加者。我们想编写这样的处理程序,这是适当的处理程序来扩展... StreamHandler或FileHandler? 还有其他问题,我们是否有办法为单个处理程序配置2个不同的文件,比如FileHandler说,我们希望某种文件中需要捕获某种消息,而其他文件中则需要其他消息。

感谢任何评论。

3 个答案:

答案 0 :(得分:1)

日志轮换 - 告诉管理层Apache是​​世界上最大的代码库之一,我相信有数百万个项目使用它。但是既然你已经重申了“管理决策”,那么你可以编写自己的FileHandler或使用Java文件处理程序,编写你的任务,编写数百个测试场景(比如在处理程序附加文件时滚动文件)

FileHander写入两个文件 - 或者是FileHandler的子类(文件处理程序应该知道何时发送到这两个文件)但是规定的解决方案将使用两个实际上不同的记录器,其中两个不同的名称与附加两个appenders。单个java源可以根据需要记录到尽可能多的记录器,所以

class MyClass {
    Logger fileLogger = Logger.getLogger("something.mapped.to.file");
    Logger dbLogger = Logger.getLogger("something.mapped.to.db");

    public void someMethod() {
        dbLogger.log("XXX");
        fileLogger.log("YYY");
    }
}

答案 1 :(得分:1)

您不需要Quartz任务。在每个日志中验证是否需要中断文件。

答案 2 :(得分:0)

您可以编写每天00:00运行的调度程序(Quartz调度程序或类似程序)。让代码执行FileHandler并执行文件轮换。