ใน Java 9 Platform Logging API ใช้ log messages ด้วย service interface สำหรับ consumer ของข้อความเหล่านั้น การ implement ของ LoggerFinder ถูกโหลดด้วย java.util.ServiceLoader API โดยใช้ System ClassLoader จากการ implement นี้ แอปพลิเคชันสามารถเสียบ logging backend ภายนอกของตัวเองได้โดยไม่ต้องตั้งค่า java.util.logging
สามารถส่งชื่อคลาสหรือโมดูลให้ LoggerFinder เพื่อให้รู้ว่าจะคืน logger ไหน
ตัวอย่าง LoggerFinder Implementation
public class MyLoggerFinder extends LoggerFinder {
@Override
public Logger getLogger(String name, Module module) {
// return a logger depends on name/module
}
}
หากไม่พบ concrete implementation จะใช้ default LoggerFinder implementation ได้ logger ที่สร้างจาก LoggerFinder โดยใช้ factory methods ของคลาส System
Factory Methods ใน System Class
public class System {
System.Logger getLogger(String name) { }
System.Logger getLogger(String name, ResourceBundle bundle) { }
}
System.Logger Interface
System.Logger เป็น interface สำหรับ logging operations:
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);
}
ระดับ Log Level
- ALL - ทุกระดับ
- TRACE - รายละเอียดมากที่สุด
- DEBUG - ข้อมูล debug
- INFO - ข้อมูลทั่วไป
- WARNING - คำเตือน
- ERROR - ข้อผิดพลาด
- OFF - ปิด logging
Platform Logging API ทำให้แอปพลิเคชันใช้ logging framework ใดก็ได้ (SLF4J, Log4j2, Logback) โดยไม่ผูกมัดกับ java.util.logging