2013-02-17 152 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並改變其路徑

相關問題