Java:
Ghi log

Cách thực hiện:

Dưới đây là cách đơn giản để bắt đầu với việc ghi nhật ký trong Java sử dụng gói java.util.logging có sẵn.

import java.util.logging.Logger;
import java.util.logging.Level;

public class AppLogging {
    private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    public static void main(String[] args) {
        LOGGER.info("Ghi một thông điệp cấp độ INFO");

        try {
            int division = 10 / 0;
        } catch (ArithmeticException e) {
            LOGGER.log(Level.SEVERE, "Xảy ra ngoại lệ", e);
        }
    }
}

Điều này sẽ tạo ra đầu ra như sau:

Jul 03, 2023 2:00:00 CH AppLogging main
INFO: Ghi một thông điệp cấp độ INFO
Jul 03, 2023 2:00:00 CH AppLogging main
SEVERE: Xảy ra ngoại lệ
java.lang.ArithmeticException: / cho zero
    tại AppLogging.main(AppLogging.java:10)

Sâu hơn

Việc ghi nhật ký trong Java đã phát triển khá nhiều. Trước đây, việc ghi nhật ký thường được thực hiện một cách tùy tiện với các output hệ thống và cơ chế tự viết. Tuy nhiên, nhu cầu về sự chuẩn hóa đã dẫn đến việc ra đời các API ghi nhật ký như Log4jSLF4J. Gói java.util.logging được giới thiệu trong JDK 1.4, cung cấp một cách chuẩn hóa để ghi nhật ký.

Các lựa chọn thay thế cho java.util.logging (JUL) bao gồm Log4j 2 và SLF4J. Trong khi JUL được xây dựng sẵn trong Java và do đó không cần thêm phụ thuộc, cả Log4j 2 và SLF4J đều cung cấp những tính năng nâng cao như kiểm soát cấu hình ghi nhật ký một cách chi tiết hơn, ghi nhật ký bất đồng bộ và hiệu suất tốt hơn.

Về mặt triển khai, việc ghi nhật ký có thể là đồng bộ, nơi mỗi thông điệp nhật ký được xử lý trong luồng đã tạo ra nó, hoặc là bất đồng bộ, nơi các thông điệp được chuyển giao cho một luồng riêng biệt. Ghi nhật ký bất đồng bộ có thể cải thiện hiệu suất nhưng giới thiệu độ phức tạp khi người ta phải xử lý đồng thời và đảm bảo rằng các thông điệp nhật ký không bị mất khi ứng dụng bị sập.

Xem thêm