2011-02-08 18 views
2

我有關於登錄Java應用程序的問題。我想用用戶友好的消息記錄主要用戶操作和可能的錯誤。因此,我有兩個記錄器appender:一個在對話框中顯示錯誤(級別=錯誤),另一個將當前用戶會話的日誌寫入html文件,以便用戶在發生錯誤時可以發回該文件。訪問Java應用程序中的記錄器

爲避免在每個類別的記錄器創建(私人記錄器記錄器= ...)我有配置記錄器的一類應用程序的靜態基準,其具有也用於訪問記錄器的方法:

public class App { 
    private static Logger logger = Logger.getLogger("logger name"); 
    … 
    public static void logError(String message, Throwable cause) { 
    … 
    } 
    public static void logInfo(String message) { 
    … 
    } 
} 

日誌記錄主要在UI類中完成:

class UIWidget extends UIFrameworkWidget { 

    void aMethod() { 
     try { 
      someBusinessLogic(); 
     } catch (Exception e) { 
      App.logError(「log message」, e); 
     } 
    } 
} 

這是一個很好的做法嗎? (請注意,小部件是由框架創建。)

預先感謝答覆,評論,或在此

回答

2
更好

提示是使用一個單一的靜態Logger實例,但允許每一個類來創建一個私人這個實例是用類名(也可能是其他信息)初始化的。這個私有實例然後使用靜態實例來實際執行它的日誌記錄,但如果需要可以省略,並減少對外部類的引用。

這就是slf4j這樣做的,這是一個你應該考慮使用的日誌框架 - 但是你可以用同樣的方式推出自己的日誌框架。

請注意,但是我不知道如何讓您的錯誤消息顯示在對話框中 - 可能需要明確添加。

2

看來你只是離開了JDK Logger的子類。只有一個靜態實例會阻止您在運行時定位特定的類。如果您繼承了Logger,那麼您仍然可以擁有許多記錄器作爲記錄類,但仍然保持您的appender的特性。你也可以製作你自己的佈局(至少在log4j中,甚至可以添加佔位符--Geronimo就是這方面的一個例子)。

相關問題