旋轉

2009-10-02 56 views
3

我用java.util.logging.Logger中登錄我的應用程序禁用Java日誌:旋轉

FileHandler fh=new FileHandler(this.todayFileName, 0, 1, true); 

    fh.setFormatter(new SimpleFormatter()); 

    Logger.getLogger(rootLogger.getName()).setLevel(Level.ALL); 

    Logger.getLogger(rootLogger.getName()).addHandler(fh); 

但這只是日誌旋轉不正常工作被啓用。

和我得到的文件:

RUN.LOG run.log.1 run.log.2

我要的是得到的只有一個日誌文件,沒有啓用旋轉。

我該怎麼做?

+6

強制性答案:不要使用java.util.logging,這太糟糕了。使用別的東西。還要別的嗎。 – skaffman 2009-10-02 10:27:15

回答

1

如果您在同一時間運行同一應用程序不止一次的java.util.logging將創建像RUN.LOG run.log.1 run.log.2

許多日誌文件,並確定您的應用程序正確關閉,因爲我已經有這個問題。由於我的應用程序沒有正確關閉,所以當我啓動我的應用程序時,創建了一個myApplication.log.1

-1

如果您必須使用它,請嘗試使用Integer.MAX_INT而不是0. 0實際上可能會被視爲0字節,因此每次初始化時都會導致旋轉。

順便說一句,如果你想'只有一個文件,沒有旋轉',然後使用1-arg構造函數,只需要文件名,它會做正確的事情。

+0

這沒有奏效!任何其他建議? – Attilah 2009-10-02 12:30:48

+0

從FileHandler javadoc:「limit指定要寫入的近似最大數量(以字節爲單位)到任何一個文件,如果爲零,則沒有限制。」所以設置爲0應該禁用限制,不會導致無限旋轉。 – 2009-10-02 21:50:19

+0

這也行不通 – mvg 2010-12-14 09:32:50

1

您必須使用FileHandle構造函數,使用文件名和布爾值或僅使用文件名的文件名,這樣你將得到一個沒有旋轉的單個日誌文件。

Regards, Luis。

+0

這適用於我。例如:'Handler fh = new FileHandler(「output.log」,1048576,1,true);'。只有一個文件被創建,它被附加並且每1048576字節被清除。 – atomicules 2010-11-23 09:49:09

1

除了已經給出的答案,我會質疑你想禁用logrotation。有很好的理由讓日誌旋轉(如磁盤空間不足等),這是一個標準的過程。我會說調查是什麼讓你想要關閉它並消除這種需求。例如。如果你想能夠很容易地挖掘日誌信息,也許你應該考慮尋找一個可以幫你實現這個目標的軟件包(例如splunk或其他),並且可以使用旋轉日誌正常工作。還要考慮日誌的旋轉是高度可配置的,所以也許你只是想改變旋轉配置。另外考慮到你可以從日誌中得到你需要的信息,並將其保存在其他地方,並保留單獨的旋轉日誌...

根據操作系統/日誌旋轉配置系統,您可能只需要在操作系統中關閉旋轉,而不用擔心代碼。

+0

感謝您的回答。我的問題是,我的是一個高流量的Web服務應用程序,使用它的日誌記錄會以log.1,log.2等名稱創建大量文件,客戶認爲這不是很好。所以我尋找可以禁用這個選項的選項。另外,我已經設置了webservice,通過將當前日期添加到日誌文件的名稱來創建每日1個日誌文件。 – mvg 2010-12-21 05:51:40

+0

你知道如何在操作系統(Red Hat Linux)中禁用它嗎? – mvg 2010-12-21 05:52:04

+0

像往常一樣,手冊頁應該有所幫助。例如。 http://linuxcommand.org/man_pages/logrotate8.html和客戶感覺這不好。他們對unix系統管理有什麼瞭解?他們的建議是什麼?日誌旋轉是一個衆所周知的工作設置和過程/配置。他們真的瞭解它的作用嗎? – 2010-12-21 06:37:11