HOWTO · Java
在 Java 中使用記錄器
本文介紹如何在 Java 中使用記錄器。
本頁內容
在 Java 程式語言中,Logging 是一個 API,它允許使用者追蹤從特定類產生的錯誤。記錄器通過新增時間戳和填充它的端點來幫助實時記錄機制。API 有助於將事件跟蹤作為日誌的記錄進行維護。這些記錄有助於找到發生問題的根本原因,並在以後重新生成相同的事件。
本文向你展示了一種更好地利用 Java 日誌的方法。
Java 中記錄器的功能
記錄器及其功能在下面的程式中進行了演示。
package log_file;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class AddLoggerInFile {
public static void main(String[] args) {
Logger logger = Logger.getLogger("MyLog");
FileHandler fileHandler;
try {
fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
logger.addHandler(fileHandler);
SimpleFormatter simpleFormatter = new SimpleFormatter();
fileHandler.setFormatter(simpleFormatter);
logger.info("Log to test");
} catch (SecurityException e) {
logger.info("Exception:" + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
logger.info("IO Exception:" + e.getMessage());
e.printStackTrace();
}
logger.info("Hi In the main class");
}
}
在上面的程式碼塊中,記錄器最初被例項化。
該類存在於 java.util.logging 包中。getLogger 是 Logger 類中存在的靜態方法,如果系統中不存在具有給定名稱的記錄器,它會建立一個記錄器。函式 else 返回現有的記錄器例項(如果它已經存在)。
如果給定的名稱是空值,則該函式將丟擲 NullPointerException。一旦記錄器例項被例項化,就會建立一個檔案處理程式例項。
FileHandler 類存在於 java.util.logging 包中,專門設計和配置為處理使用 logger 例項列印的日誌。建構函式 FileHandler 初始化處理程式以將資訊寫入給定的檔名。建構函式將輸出檔案的名稱作為引數。
在上面的程式碼中,檔名提供了一個相對路徑。檔案中未定義大小,因為它可以擴充套件到日誌進入的限制。當編譯器在開啟檔案時遇到問題時,建構函式會丟擲 IOException。如果安全管理器沒有 LoggingPermission,則丟擲 SecurityException,如果模式是空字串,則丟擲 IllegalArgumentException。
addHandler 方法對映檔案處理程式以將日誌訊息接收到檔案中。該函式是 void 返回型別,因為它不返回任何值。相反,它僅使用日誌和事件。如果安全管理器沒有足夠的日誌記錄許可權,它會丟擲 SecurityException。
SimpleFormatter 例項被啟動;該類也存在於 java.util.logging 包中。格式化程式允許使用 logging.SimpleFormatter.format 屬性自動格式化日誌。此屬性允許日誌訊息採用定義的格式,從而保持一致性。
setFormatter 是一個在記錄器例項上設定格式化程式的函式。info 是 Logger 類中的一個函式,用於將 INFO 日誌訊息列印到檔案中。Level 類中可以存在各種日誌級別。根據用途,我們可以使用 INFO、DEBUG、FINE、CONFIG 和 SEVERE 日誌。
日誌級別 是定義程式日誌嚴重性的日誌詳細資訊。這些級別有一些定義的數字和特定的含義。例如,SEVERE 的日誌值為 1000,表示系統出現故障,必須立即處理。
當某些網路故障或資料庫連線丟失時,就會發生嚴重性。同樣,WARNING 級別的值為 900,表示系統中的潛在風險。
下面是在標準控制檯輸出和 MyLogFile.txt 檔案中填充的輸出。
輸出:
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class