在 Java 中使用記錄器

Rashmi Patidar 2021年10月2日
在 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 包中。getLoggerLogger 類中存在的靜態方法,如果系統中不存在具有給定名稱的記錄器,它會建立一個記錄器。函式 else 返回現有的記錄器例項(如果它已經存在)。

如果給定的名稱是空值,則該函式將丟擲 NullPointerException。一旦記錄器例項被例項化,就會建立一個檔案處理程式例項。

FileHandler 類存在於 java.util.logging 包中,專門設計和配置為處理使用 logger 例項列印的日誌。建構函式 FileHandler 初始化處理程式以將資訊寫入給定的檔名。建構函式將輸出檔案的名稱作為引數。

在上面的程式碼中,檔名提供了一個相對路徑。檔案中未定義大小,因為它可以擴充套件到日誌進入的限制。當編譯器在開啟檔案時遇到問題時,建構函式會丟擲 IOException。如果安全管理器沒有 LoggingPermission,則丟擲 SecurityException,如果模式是空字串,則丟擲 IllegalArgumentException

addHandler 方法對映檔案處理程式以將日誌訊息接收到檔案中。該函式是 void 返回型別,因為它不返回任何值。相反,它僅使用日誌和事件。如果安全管理器沒有足夠的日誌記錄許可權,它會丟擲 SecurityException

SimpleFormatter 例項被啟動;該類也存在於 java.util.logging 包中。格式化程式允許使用 logging.SimpleFormatter.format 屬性自動格式化日誌。此屬性允許日誌訊息採用定義的格式,從而保持一致性。

setFormatter 是一個在記錄器例項上設定格式化程式的函式。infoLogger 類中的一個函式,用於將 INFO 日誌訊息列印到檔案中。Level 類中可以存在各種日誌級別。根據用途,我們可以使用 INFODEBUGFINECONFIGSEVERE 日誌。

日誌級別 是定義程式日誌嚴重性的日誌詳細資訊。這些級別有一些定義的數字和特定的含義。例如,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
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn