1.17 Java.util.logging:JDK自带记录日志类
每個初學者都很熟悉在有問題的代碼中使用 System.out.println 方法在控制臺打印消息,來幫助觀察程序運行的操作過程。如果你使用 System.out.println 方法,一旦發現問題的根源,就要將這些語句從代碼中刪去。如果接下來又出現了問題,就需要再插入幾個調用 System.out.println 方法的語句,如此反復,增加了工作量。
日志用來記錄程序的運行軌跡,方便查找關鍵信息,也方便快速定位解決問題。下面介紹 Java 自帶的日志工具類 java.util.logging 的使用。
如果要生成簡單的日志記錄,可以使用全局日志記錄器并調用其 info 方法,代碼如下:
Logger.getGlobal().info("打印信息");JDK Logging 把日志分為如下表 7 個級別,等級依次降低。
Logger 的默認級別是 INFO,比 INFO 級別低的日志將不顯示。Logger 的默認級別定義在 jre 安裝目錄的 lib 下面。
# Limit the message that are printed on the console to INFO and above. java.util.logging.ConsoleHandler.level = INFO所以在默認情況下,日志只顯示前三個級別,對于所有的級別有下面幾種記錄方法:
logger.warning(message); logger.fine(message);同時,還可以使用 log 方法指定級別,例如:
logger.log(Level.FINE, message);例 1
public class Test {private static Logger log = Logger.getLogger(Test.class.toString());public static void main(String[] args) {// 級別依次升高,后面的日志級別會屏蔽之前的級別log.finest("finest");log.finer("finer");log.fine("fine");log.config("config");log.info("info");log.warning("warning");log.severe("server");} }輸出結果為:
十一月 27, 2019 5:13:05 下午 Test.Test main 信息: info 十一月 27, 2019 5:13:05 下午 Test.Test main 警告: warning 十一月 27, 2019 5:13:05 下午 Test.Test main 嚴重: server可以使用 setLevel 方法設置級別,例如logger.setLevel(Level.FINE);可以將 FINE 和更高級別的都記錄下來。另外,還可以使用 Level.ALL 開啟所有級別的記錄,或者使用 Level.OFF 關閉所有級別的記錄。
注意:如果將記錄級別設計為 INFO 或者更低,則需要修改日志處理器的配置。默認的日志處理器不會處理低于 INFO 級別的信息。
修改日志管理器配置
可以通過編輯配置文件來修改日志系統的各種屬性。在默認情況下,配置文件存在于 jre 安裝目錄下“jre/lib/logging.properties”。要想使用另一個配置文件,就要將 java.util.logging.config.file 特性設置為配置文件的存儲位置,并用下列命令啟動應用程序。
java -Djava.util.logging.config.file = configFile MainClass日志管理器在 JVM 啟動過程中初始化,這在 main 執行之前完成。如果在 main 中調用System.setProperty(“java.util.logging.config.file”,file),也會調用LogManager.readConfiguration()來重新初始化日志管理器。
要想修改默認的日志記錄級別,就需要編輯配置文件,并修改以下命令行。
.level=INFO可以通過添加以下內容來指定自己的日志記錄級別
Test.Test.level=FINE也就是說,在日志記錄器名后面添加后綴 .level。
在稍后可以看到,日志記錄并不將消息發送到控制臺上,這是處理器的任務。另外,處理器也有級別。要想在控制臺上看到 FINE 級別的消息,就需要進行下列設置。
java.util.logging.ConsoleHandler.level=FINE注意:在日志管理器配置的屬性設置不是系統屬性,因此,用 -Dcom.mycompany.myapp.level=FINE啟動應用程序不會對日志記錄器產生任何影響。
總結
以上是生活随笔為你收集整理的1.17 Java.util.logging:JDK自带记录日志类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.16 Java的异常跟踪栈
- 下一篇: 1.1 Java数组简介:数组是什么?