2015-08-19 35 views
0

我想寫出出現在文件中的異常。我正在使用mylogger類。問題是,我每次運行應用程序並捕獲異常時,都會從文件中刪除其他異常。java中的mylogger類

這裏是mylogger類

public class MyLogger { 

static private FileHandler fileTxt; 

static private SimpleFormatter formatterTxt; 

private Logger logger; 

public void setup() throws IOException { 
    logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); 

    logger.setLevel(Level.INFO); 

    fileTxt = new FileHandler("Logging.txt"); 

    // create a TXT formatter 
    formatterTxt = new SimpleFormatter(); 
    fileTxt.setFormatter(formatterTxt); 

    logger.addHandler(fileTxt); 
} 

public void log(Exception e) { 
    logger.info("test"); 
} 

public void logClientReporting(String string) { 
    // TODO Auto-generated method stub 
    logger.info(string); 
} 

public void logSocket(String string) { 
    // TODO Auto-generated method stub 
    logger.info(string); 
} 
} 

我呼叫建立的主類。

這裏是我如何調用日誌方法:

catch (Exception e) { 
     // TODO: handle exception 
     System.err.println("JSON Exception in getAvailableDesings"); 
     logger.logSocket(e.toString()); 
    } 
+1

你試過'新的FileHandler(「Logging.txt」,true);'? IIRC,append的默認值爲false,但可能是錯誤的。 –

+0

工作。感謝的 – spoke

回答

1

我認爲這個問題是在初始化文件處理器使用的構造函數。 FileHandler有多個構造函數,其中一個接受第二個參數,一個叫append的布爾值,這應該是正確的,以追加新的日誌而不覆蓋它們。所以它應該是:

fileTxt = new FileHandler("Logging.txt", true); 

和快速意見,如果我可以使用日誌記錄庫,也不要試圖重寫的東西。我推薦apache log4j2,或者slf4j,它爲您提供了很好的日誌記錄選項。您可以定義模式,打印什麼格式(例如日誌開頭的日期),時間/文件大小限制,再次翻轉文件的時間以及其他選項。

+0

當然,是的,我也建議使用Log4j2,它可能比你需要的功能更多。 SLF4J只是一個日誌外觀,對於框架等來說很不錯,但對於不需要應對不斷變化的環境等明確定義的項目而言可能是過度的。 –