1. 程式人生 > >tomcat源碼閱讀之日誌記錄器(Logger)

tomcat源碼閱讀之日誌記錄器(Logger)

prefix 實現類 blog 設定 區別 msg erro info tomcat

UML圖:

技術分享

1、Logger接口中定義了日誌的級別:FATAL、ERROR、WARNING、INFORMATION、DEBUG,通過接口函數getVerbosity獲取日誌級別,setVerbosity設置日誌級別;

2、接口中提供一組重載的log方法來記錄日誌,在LoggerBase實現類中除了log(String msg)方法沒有實現外,其他重載的log方法均實現為調用這個方法來實現日誌的記錄;

3、在LoggerBase類中,默認的日誌級別是ERROR;帶日誌級別參數的log方法在記錄日誌時,如果參數的日誌級別的數字比該日誌記錄器實例中設定的等級低,才會記錄該消息,否則,會忽略該條記錄。代碼如下:

技術分享

4、FileLogger日誌記錄器為將日誌輸出到文件中;SystemErrLogger和SystemOutLogger均為在控制臺上輸出日誌,區別只是一個輸出錯誤信息日誌,一個輸出正常日誌信息,代碼如下:

技術分享 技術分享

FileLogger的實現:

1、日誌文件默認記錄到logs文件夾下,擴展名默認為.log,並且文件名帶有日期前綴,在每次記錄日誌時,會拿系統當前日期和日誌記錄日期做比較,如果不相同則關閉當前日誌文件並重新創建新的日誌文件,代碼如下:

技術分享

可以看到在日期發生改變時,更新date變量,並調用open方法創建新的日誌文件;

2、open方法首先檢查要創建的日誌文件所在的目錄是否存在,如果不存在則創建,然後根據prefix、date、suffix三個變量生成新的日誌文件名並創建新的日誌文件;最後通過FileWritter把信息寫入到文件中;代碼如下:

技術分享

tomcat源碼閱讀之日誌記錄器(Logger)