(轉)log4j(三)——如何控制不同級別的日誌信息的輸出?
阿新 • • 發佈:2017-07-25
erro basic man 所有 ack pan span 開關 eap
一:測試環境與log4j(一)——為什麽要使用log4j?一樣,這裏不再重述
1 老規矩,先來個栗子,然後再聊聊感受
package test.log4j.test3; import org.apache.log4j.*; //by godtrue public class UseLog4j { //日誌記錄器 private static Logger LOGGER = LogManager.getLogger(UseLog4j.class); //程序入口——主函數 public staticvoid 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(50000, "FATAL", 0); * public static final Level ERROR = new Level(40000, "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.1 感受
1)原本以為就四種級別的,沒想到有八種,知識不系統的學習,可能會錯過好多
2)級別這個知識點相對來說是最簡單,他們就像開關一樣,來決定哪些日誌方法被調用,哪些不被調用
3)他們的大小關系是這樣的——ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
4)設置了對應的級別之後,日誌框架就只調用大於等於這個級別的方法
5)Log4j建議只使用如右四個級別——DEBUG < INFO < WARN < ERROR
(轉)log4j(三)——如何控制不同級別的日誌信息的輸出?