日志的出現是為了彌補使用System.out.PRintln()進行調試的不足. 因為打印語句需要我們一條一條手動控制.
日志的管理分為兩大部分:
日志記錄器日志處理器日志記錄器負責按設定級別對日志進行記錄和向上傳遞, 日志處理器負責按設定級別對日志進行打印.
最簡單的使用情況是通過調用Logger.getGlobal()獲得全局日志記錄器. 然后通過info()這樣的方法來按級別輸出日志.
可以通過Logger.global.setLevel(Level.OFF)設置日志級別. 現在設置的是OFF, 則所有的日志信息都不會輸出.
注意 日志輸出語句只要存在, 無論是否最終進行了輸出, 其消息體就會創建, 如果擔心消息創建的代價, 可以使用lambda表達式代替. 詳見 Jav8 - 通過lambd表達式進行計算 一文.
如果你想對每個類創建分離的日志記錄器, 可以使用以下語句:
Logger logger = Logger.getLogger(LoggerExample.class.getName());注意 日志記錄器是有層級的, 也就是說如果你有一個日志記錄器名為com.congyh, 如果你關閉了com日志記錄器的日志輸出, 那么com.congyh也不會進行日志輸出.
日志共有七種級別: SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST.
默認情況下, 會輸出INFO及以上級別的日志, 可以通過使用Level.ALL來開啟所有級別的日志, 也可以按日志級別進行控制.
你應該使用CONFIG及以下級別的日志來輸出debug信息.
日志處理器按照輸出的形式分為三種: ConsoleHandler, FileHandler, SocketHandler.
默認的日志處理器工作在INFO級別, 如果不對其進行修改, 即使日志記錄器設置在例如CONFIG級別, 那么日志實際上是只記錄不輸出. 假設我們現在有一個類叫做LoggerExample, 正確的使用案例如下:
程序輸出如下:
三月 05, 2017 10:24:49 上午 com.github.congyh.log.LoggerExample main配置: 使用按名創建的logger輸出CONFIG級別的信息新聞熱點
疑難解答