log4j(三)——如何控制不同級別的日志信息的輸出?


一:測試環境與log4j(一)——為什么要使用log4j?一樣,這里不再重述

 

二:老規矩,先來個栗子,然后再聊聊感受

import org.apache.log4j.*;
//by godtrue
public class UseLog4j {
    //日志記錄器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
    //程序入口——主函數
    public static void main(String[]args){
        //設置日志信息的格式化方式
        String pattern = "%l - %p - %m%n";
        //設置日志信息輸出的風格樣式
        Layout layout = new PatternLayout(pattern);
        //設置日志信息的輸出目的地
        Appender appender= new ConsoleAppender(layout);
        //設置日志信息的輸出配置
        BasicConfigurator.configure(appender);
        /**
         * 日志輸出的級別,主要有以下幾種:
         * 1)ALL    打印各級日志信息包括自定義級別。
         * 2)TRACE    最詳細的信息。一般這些信息只記錄到日志文件中。自版本1.2.12[3]。
         * 3)DEBUG    流經系統的詳細信息。一般這些信息只記錄到日志文件中。
         * 4)INFO    令人感興趣的運行時事件(啟動/關閉)。一般這些信息將立即呈現在狀態控制台上,因而要保守使用,並保持到最低限度。
         * 5)WARN    使用已過時的API,API的濫用,潛在錯誤,其他不良的或意外的運行時的狀況(但不一定是錯誤的)。一般這些信息將立即呈現在狀態控制台上。
         * 6)ERROR    其他運行時錯誤或意外情況。一般這些信息將立即呈現在狀態控制台上。
         * 7)FATAL    導致應用程序提前終止的嚴重錯誤。一般這些信息將立即呈現在狀態控制台上。
         * 8)OFF    最高級別,用於關閉日志記錄。
         *
         * 日志的級別之間的大小關系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
         *
         * Log4j建議只使用四個級別,優先級從高到低分別是 ERROR > WARN > INFO > DEBUG。
         * 通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。
         * 比如:在這里如果定義了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來,但是 ERROR > WARN > INFO 這三者的日志信息能夠正常打印
         */

        /**
         * 設置日志的級別,為了加深日志級別的作用的印象,你可以試試設置一下各個級別,看看對日志信息輸出的控制:
         *     public static final Level OFF = new Level(2147483647, "OFF", 0);
         *     public static final Level FATAL = new Level('썐', "FATAL", 0);
         *     public static final Level ERROR = new Level('鱀', "ERROR", 3);
         *     public static final Level WARN = new Level(30000, "WARN", 4);
         *     public static final Level INFO = new Level(20000, "INFO", 6);
         *     public static final Level DEBUG = new Level(10000, "DEBUG", 7);
         *     public static final Level TRACE = new Level(5000, "TRACE", 7);
         *     public static final Level ALL = new Level(-2147483648, "ALL", 7);
         */
        LOGGER.setLevel(Level.INFO);
        //打印當前的日志信息有效級別
        LOGGER.fatal("the effective level is : "+LOGGER.getEffectiveLevel());
        //測試日志級別的作用,僅僅輸出大於等於目前有效級別的日志信息
        LOGGER.trace("my level is TRACE");
        LOGGER.debug("my level is DEBUG");
        LOGGER.info(" my level is INFO");
        LOGGER.warn(" my level is WARN");
        LOGGER.error("my level is ERROR");
        LOGGER.fatal("my level is FATAL");
    }
}

三:感受

      1)原本以為就四種級別的,沒想到有八種,知識不系統的學習,可能會錯過好多

       2)級別這個知識點相對來說是最簡單,他們就像開關一樣,來決定哪些日志方法被調用,哪些不被調用

       3)他們的大小關系是這樣的——ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

       4)設置了對應的級別之后,日志框架就只調用大於等於這個級別的方法

       5)Log4j建議只使用如右四個級別——DEBUG < INFO < WARN < ERROR

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM