Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Platform Logging API trong Java 9

Java 9 giới thiệu Platform Logging API: log message với service interface cho consumer. Implementation của LoggerFinder được load qua java.util.ServiceLoader bằng System ClassLoader. Ứng dụng có thể plug-in logging backend riêng (Log4j, SLF4J...) mà không cấu hình java.util.logging.

LoggerFinder tùy chỉnh

public class MyLoggerFinder extends LoggerFinder {
    @Override
    public Logger getLogger(String name, Module module) {
        // Trả về logger tùy thuộc name/module
        // VD: return Log4jLogger.getLogger(name);
    }
}

Lấy Logger từ System

public class System {
    public static System.Logger getLogger(String name) { ... }
    public static System.Logger getLogger(String name, ResourceBundle bundle) { ... }
}

Luồng hoạt động

  1. App gọi System.getLogger("com.example.MyClass").
  2. LoggerFinder (custom hoặc default) tạo/ trả về System.Logger.
  3. System.Logger delegate đến backend logging thực tế (JUL, Log4j, SLF4J...).

System.Logger interface

public interface Logger {
    void log(Level level, ResourceBundle bundle, String msg, Throwable thrown);
    void log(Level level, ResourceBundle bundle, String format, Object... params);
    boolean isLoggable(Level level);
    // ... các method convenience: debug, info, warning, error...
}

Lợi ích

  • Decoupling: Platform code (JDK) không phụ thuộc logging implementation cụ thể.
  • Pluggable: App/server (Spring, Tomcat, WildFly) cung cấp LoggerFinder riêng.
  • Zero dependency: Thư viện dùng System.Logger không cần pull logging framework.
  • Module-friendly: Hoạt động tốt với JPMS (module system).

Mức độ log (Level)

enum Level { TRACE, DEBUG, INFO, WARNING, ERROR }

Platform Logging API là bước tiến quan trọng để JDK và ứng dụng chia sẻ logging infrastructure thống nhất, linh hoạt.