簡體   English   中英

SLF4J日志記錄,不同級別

[英]SLF4J logging, different Levels

在SLF4J(日志記錄)中,級別的特性如何不同。 即ERROR消息與DEBUG消息有何不同。

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");

從底部開始,如果您已經擁有所有可能級別的所有不同方法,那么使用log(level, msg)方法並沒有真正的好處。 僅當您需要以不同級別記錄同一條消息時,但這是一個不好的做法,因為該消息顯然應該屬於一個特定類別。 而且,您始終可以通過全局或在包/類中指定級別來選擇獲取多少日志。 該消息在每個級別上都是完全相同的,唯一的區別是,該消息是否要根據您的配置生成到日志輸出中,以及您對每個級別給出什么目的。

給它們命名級別的主要目的是使您能夠在各個級別上進行調試。 例如,INFO級別可用於在執行期間記錄有關應用程序進度的高級信息。 記錄的調試級別不僅限於高級信息,更深層的。 在DEBUG級別,您可以記錄更多信息,其中包括有關模塊級別或組件級別發生的情況的信息。 TRACE級別更加精細。 您可以記錄諸如進入和退出方法之類的消息,以及每種方法所返回的信息。 錯誤級別僅用於記錄錯誤和異常

您需要注意可以將哪種消息登錄到各自的級別。

為了回答您的問題,可以在log4j.properties或log4j.xml中控制這些級別。 您可以指定應用程序可以調試的級別。 如果在應用程序中一切順利,我將其保留在INFO級別。 如果出現問題,並且我想在調試方面進行更深入的研究,我將嘗試在DEBUG級別或TRACE級別打開。

另外,請理解,當您在DEBUG級別運行調試時,甚至會打印INFO級別的日志。 如果在TRACE級別打開調試,則甚至會打印DEBUG和INFO級別的日志。 如果在INFO級別打開調試,則僅會打印INFO級別的日志。

希望您能澄清一下。

因為它更易於您使用。 作為實現,它可能具有該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM