java日志——基本日志+高级日志
【0】README
0.1) 本文描述+源代碼均 轉自 core java volume 1, 旨在理解 java日志——基本日志+高級日志 的相關知識;
【1】記錄日志
1.1)出現的問題和解決方法:
- 1.1.1)出現的問題:在我們調試的時候, 通過喜歡 插入 System.out.println 語句來輔助我們調試, 當出現新的問題,又要插入 該語句進行調試。
- 1.1.2)解決方法:記錄日志API 就是為了解決這個問題而設計的。
1.2)下面是記錄日志 API的優點(Priority):
- P1)可以很容易地取消全部日志記錄, 或者僅僅取消某個級別的日志, 而且打開和關閉這個操作也很容易;
- P2)可以很簡單地禁止日志記錄的輸出, 因此,將這些日志代碼留在程序中的開銷很小;
- P3)日志記錄可以被定向到不同的處理器, 用于在控制臺中顯示, 用于存儲在文件中等;
- P4)日志記錄器和處理器都可以對記錄進行過濾。 過濾器可以根據過濾實現器制定的標準丟棄那些無用的記錄項;
- P5)日志記錄可以采用不同的方式格式化,例如, 純文本或 xml;
- P6)應用程序可以使用 多個 日志記錄器, 他們使用類似包名的這種具有層次結構的名字, 如, com.a.b.c;
- P7)在默認情況下, 日志系統的配置由配置文件控制。 如果需要的話, 應用程序可以替換這個配置;
【2】基本日志
2.1)看個荔枝:日志系統管理者一個名為 Logger.global 的默認日志記錄器, 可以用System.out 替換他, 并通過調用 info 方法記錄日志信息:
Logger.getGlobal().info("File->Open menu item seleted");2.1.1)在默認情況下,這條記錄將會顯示如下內容:
May 10, 2013 10:12:25 PM LoggingImageView fileOpen INFO: FIle->Open menu item selected
Attention)
- A1)自動包含了 時間、調用的類名和方法名;
- A2) 如果在相應的地方調用 Logger.getGlobal().setLevel(Level.OFF);將會取消所有日志;
Warning)在修改bug 7184195 前,還需要調用 Logger.getGlobal().setLevel(Level.INFO)來激活全局日志記錄器;
【3】高級日志
3.1)在一個專業的應用程序中, 不要將所有的日志都記錄到 一個全局日志記錄器中, 而是可以自定義日志記錄器;
* 3.1.1)調用 getLogger方法可以創建或 檢索記錄器
3.2)與包名類似, 日志記錄器名也具有層次結構,且層次性更強
- 3.2.1)對于包來說, 一個包的名字與其父包的名字間沒有語義關系, 但是日志記錄器的父與子間將共享某些屬性;
3.2.2)看個荔枝: 如果對 com.mycompany 日志記錄器設置了 日志級別, 它的子記錄器也會繼承這個級別, 通常有7個日志記錄器級別(Level):
- L1) SEVERE
- L2) WARNING
- L3) INFO
- L4) CONFIG
- L5) FINE
- L6) FINER
- L7) FINEST
3.2.3)默認情況下, 只記錄前3個級別, 也可以設置其他級別;
- 3.2.4)使用 Level.ALL 開啟所有級別的記錄, 使用 Level.OFF 關閉所有級別的記錄;
3.3)對于所有的基本有下面幾種記錄方法(Methods):
- M1) logger.warning(msg);
- M2) logger.fine(msg);
- M3)使用log 方法指定級別: logger.log(Lebel.FINE, msg);
Hint)默認的日志配置記錄了 INFO 或更高級別的所有記錄, 因此,應該使用 CONFIG、FINE, FINER, FINEST 級別來記錄那些有助于診斷, 但對于程序員有沒有太大意義的調試信息;
Warning)如果將記錄設計為INFO 或更低, 則需要修改日志處理器的配置, 默認的日志處理器不會處理低于 INFO 級別的信息;
3.4)默認的日志記錄將顯示包含日志調用的類名和方法名, 如同堆棧所顯示的那樣。 但是, 如果虛擬機對執行過程進行了優化, 就得不到準確的調用信息。 此時, 可以調用 logp 方法獲得調用類和方法的確切位置, 這個方法的簽名為:
- 3.4.1)下面有一些跟蹤執行流的方法:
- 3.4.2)看個荔枝:
- 這些調用將生成FINER 級別和以 字符串“ENTRY” 和 “RETURN”開始的日志記錄;
3.5)記錄日志的常見用途是記錄那些不可預料的異常。 可以使用下面兩個方法提供日志記錄中包含的異常描述內容(Methods):
- 日志記錄 API 如下:
- M1)典型用法是:
- M2)還有一種:
- 調用throwing 可以記錄一條 FINER 級別的記錄和一條以 THROW 開始的信息;
總結
以上是生活随笔為你收集整理的java日志——基本日志+高级日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java断言——Assertion
- 下一篇: 天正cad缩放快捷键命令(天正cad字体