2013-02-17 148 views

回答

0

您可以使用记录器API(log4j)在每小时生成日志文件。

3

无需额外的努力。使用DailyRollingFileAppender其中集Datepattern - '.'yyyy-MM-dd-HH - 翻转在每小时的顶部

示例 -

log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd-HH 
... 

参考 - DailyRollingFileAppender

注:在DatePattern选项字符中的任何地方:不要使用冒号 “”。冒号前面的文本是作为URL的协议规范进行了介绍的,这可能不是您想要的。

+0

+1 OP没有回应,但没有任何其他方法。 :) – Arpit 2013-02-17 06:43:04

+0

@Arpit我只能说--- :) – 2013-02-17 07:34:33

0

您可以创建自定义FileAppender,财产以后像

public class TestFileAppender extends WriterAppender { 
    String pattern; 

    public void setFile(String file) { 
     this.pattern = file; 
    } 

    public synchronized void update() { 
     try { 
      closeWriter(); 
      String folder = new SimpleDateFormat("yyyyMMddHH").format(new Date()); 
      File file = new File(String.format(pattern, folder)); 
      file.getParentFile().mkdirs(); 
      setWriter(new BufferedWriter(new FileWriter(file, true))); 
     } catch (IOException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

使用它,它的log4j配置

log4j.appender.file = test.TestFileAppender 
log4j.appender.file.file = xxx/%s/1.log 
log4j.appender.file.layout = org.apache.log4j.SimpleLayout 

和运行FolderNameChanger每小时一次

class FolderNameChanger extends TimerTask { 

    FolderNameChanger() { 
     run(); 
    } 

    public void run() { 
     Enumeration<Appender> e = Logger.getRootLogger().getAllAppenders(); 
     while (e.hasMoreElements()) { 
      Appender a = e.nextElement(); 
      if (a instanceof TestFileAppender) { 
       ((TestFileAppender) a).update(); 
      } 
     } 
    } 
} 

这个任务找到所有TestFileAppenders并改变其路径

相关问题