2014-02-12 54 views
0

我想要做一些調整,以我的日誌我的應用程序... 我想一些幫助,以提高我有以下主要方法:寫日誌,最早的文件目錄

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

+0

如果它總是寫入最老的文件,永遠不會只創建一個文件?或者你的意思是隻有在創建了6個文件後才寫入最老的? –

回答

0

唯一的近似值是做到以下幾點:

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

參見:JDK-6350749 - 增強的FileHandler有每日日誌循環功能。