2016-09-21 126 views
0

在SLF4J(日誌記錄)中,特徵級別有何不同。即ERROR消息與DEBUG消息不同。SLF4J日誌記錄,不同級別

import org.apache.log4j.Logger; 

public class LogClass { 

    private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class); 
    public static void main(String[] args) { 

     log.trace("Trace Message!") 
     log.debug("Debug Message!"); 
     log.info("Info Message!"); 
     log.warn("Warn Message!"); 
     log.error("Error Message!"); 
     log.fatal("Fatal Message!"); 
    } 
} 

輸出是一樣的,不管水平如何,有沒有實施任何區別:

Debug Message! 
Info Message! 
Warn Message! 
Error Message! 
Fatal Message! 

如果這些水平產生相同類型的消息,那麼爲什麼執行不只有一個方法用參數作爲級別。 類似於:

log("Level","msg"); 

回答

1

從底部開始,就沒有真正的好處有log(level, msg)方法,如果你已經把所有的所有可能等級的不同方法。只有當你需要在不同級別登錄相同的信息時,這是一個不好的做法,因爲這個信息應該清楚地歸入一個特定的類別。而且,您可以通過全局或在包/類中指定級別來始終選擇要輸出多少記錄。 消息在每個級別上都完全相同,唯一的區別是如果該消息將根據您的配置對日誌輸出做出決定,以及您爲每個級別提供了什麼目的。

+0

如何動態確定關卡或基於用戶輸入的情況如何。目前,您需要分支(if-else或switch-case),而使用日誌(Level,String)時,您可以調用一次日誌。 – Dormouse

-1

因爲它更容易作爲用戶使用。作爲實現,它可能會有那個代碼。

1

的主要目的,他們的名字是水平,使您在各種級別進行調試。舉例來說, INFO級別可用於記錄執行期間應用程序進度的高級信息。 記錄的DEBUG級別意味着要比高級信息更深入。在DEBUG級別,您可以記錄更多信息,其中可以包含在模塊級別或組件級別發生的情況的信息。 TRACE級別更加細化。您可以記錄消息,如進入和退出方法以及每種方法返回的信息。 錯誤級別純粹意味着僅記錄錯誤和異常

您需要注意哪些消息可以記錄到其各自的級別。

要回答你的問題,這些水平可以在log4j.properties或log4j.xml文件進行控制。您可以指定應用程序可以調試的級別。如果在應用程序中一切順利,我會將其保留在INFO級別。如果出現問題,我想在調試方面深入挖掘,我會嘗試在DEBUG級別或TRACE級別打開。

而且,明白,當你在運行DEBUG級別的調試,甚至INFO級別的日誌將被打印出來。如果在TRACE級別打開調試,即使打印DEBUG和INFO級別的日誌。如果在INFO級別打開調試,則只會打印INFO級別日誌。

我希望你有一些澄清。