2013-04-09 49 views
1

這是我的代碼,我想知道爲什麼它沒有記錄任何內容。當我輸入到調音臺,它說:我正在嘗試將文本從控制檯記錄到文本文件,並且未創建文本文件

你好

2013年4月8日下午10時十三分47秒java.util.logging.LogManager中$ RootLogger登錄

信息:你好

然而,沒有任何記錄到任何文件。

import java.io.IOException; 
import java.util.Scanner; 
import java.util.logging.FileHandler; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.util.logging.SimpleFormatter; 

public class main { 
    public static void main(String[] args) throws IOException{ 

     while (1 == 1) { 
      String text; 
      Scanner in = new Scanner(System.in); 
      text = in.nextLine(); 
      FileHandler fileTxt; 
      SimpleFormatter formatterTxt; 
      Logger logger = Logger.getLogger(""); 
      logger.setLevel(Level.INFO); 
      fileTxt = new FileHandler("../loggedText.txt"); 
      formatterTxt = new SimpleFormatter(); 
      fileTxt.setFormatter(formatterTxt); 
      logger.addHandler(fileTxt); 
      logger.info(text); 
     } 
    } 
} 
+0

不想成爲「那些」人之一,但你有沒有考慮過使用像log4j這樣的專用日誌庫而不是內置的日誌類? – Catchwa 2013-04-09 04:59:43

回答

0

您的循環永遠不會終止,這意味着JVM永遠不會執行正確的關閉。如果所有日誌記錄關閉鉤子正常執行,FileHandler只會關閉並同步。數據可能被寫入,但從不是synched with the filesystem

讓我們創建一個修正的例子,可以正常終止:

public class main { 

    private static final Logger logger = Logger.getLogger(""); //Prevent G.C. 

    public static void main(String[] args) throws IOException { 
     logger.setLevel(Level.INFO); 
     FileHandler fileTxt = new FileHandler("../loggedText.txt"); 
     fileTxt.setFormatter(new SimpleFormatter()); 
     logger.addHandler(fileTxt); 

     System.out.println("root.level " + logger.getLevel()); 
     System.out.println("FileHandler.level " + fileTxt.getLevel()); 
     Scanner in = new Scanner(System.in); 
     String text; 
     while (true) { 
      System.out.print("Enter text: "); 
      text = in.nextLine(); 
      if (text != null && !text.isEmpty() 
        && !"quit".equalsIgnoreCase(text)) { 
       logger.info(text); 
      } else { 
       System.out.println("Done!"); 
       break; 
      } 
     } 
    } 
} 

將輸出以下控制檯:

root.level INFO 
FileHandler.level ALL 
Enter text: hello 
Nov 22, 2016 10:39:19 AM java.util.logging.LogManager$RootLogger log 
INFO: hello 
Enter text: quit 
Done! 

在文件系統包含loggedText.txt

Nov 22, 2016 10:39:19 AM java.util.logging.LogManager$RootLogger log 
INFO: hello 

如果你不能正常終止,你需要明確地調用FileHandler.close()您創建的處理程序上。

注意:記錄的類名稱和方法名稱不正確,它被稱爲JDK-8152389

相關問題