Java:
การบันทึกล็อก

วิธีทำ:

ต่อไปนี้เป็นวิธีง่ายๆในการเริ่มต้นใช้งานการบันทึกล็อกใน Java โดยใช้แพ็กเกจ java.util.logging ที่มีให้ในตัว

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("บันทึกข้อความระดับ INFO");

        try {
            int division = 10 / 0;
        } catch (ArithmeticException e) {
            LOGGER.log(Level.SEVERE, "เกิดข้อยกเว้น", e);
        }
    }
}

นี่จะทำให้ผลลัพธ์แสดงข้อความดังนี้:

Jul 03, 2023 2:00:00 PM AppLogging main
INFO: บันทึกข้อความระดับ INFO
Jul 03, 2023 2:00:00 PM AppLogging main
SEVERE: เกิดข้อยกเว้น
java.lang.ArithmeticException: / by zero
    at AppLogging.main(AppLogging.java:10)

การศึกษาเพิ่มเติม

การ log ใน Java ได้พัฒนาไปอย่างมาก ในอดีต, การบันทึกล็อกมักจะทำอย่างไม่เป็นระบบด้วยการแสดงผลของระบบและกลไกที่เขียนเอง อย่างไรก็ตาม, ความจำเป็นในการมาตฐานของการ log นำไปสู่การเกิดขึ้นของ API สำหรับการ log เช่น Log4j และ SLF4J แพ็กเกจ java.util.logging ถูกนำมาใช้ใน JDK 1.4, ส่งเสริมให้มีการ log ข้อความในแบบมาตรฐาน

ทางเลือกอื่นๆ สำหรับ java.util.logging (JUL) ได้แก่ Log4j 2 และ SLF4J ในขณะที่ JUL ถูกรวมอยู่ใน Java และไม่ต้องการความพึ่งพาเพิ่มเติม, ทั้ง Log4j 2 และ SLF4J นำเสนอคุณสมบัติขั้นสูงเพิ่มเติม เช่น การควบคุมการกำหนดค่าการ log ที่ละเอียดยิ่งขึ้น, การบันทึกล็อกแบบไม่ต้องรอซิงโครนัส, และประสิทธิภาพที่ดีขึ้น

ในด้านการปรับใช้, การบันทึกล็อกสามารถดำเนินการโดยแบบซิงโครนัส, ซึ่งแต่ละข้อความบันทึกล็อกจะถูกประมวลผลในเธรดที่สร้างข้อความนั้น, หรือแบบไม่ต้องรอซิงโครนัส, ซึ่งข้อความถูกส่งไปยังเธรดอื่น การบันทึกแบบไม่ต้องรอซิงโครนัสสามารถปรับปรุงประสิทธิภาพ แต่ก็เพิ่มความซับซ้อนเนื่องจากต้องการการจัดการความพร้อมใช้งานร่วมและให้แน่ใจว่าข้อความบันทึกล็อกไม่ถูกสูญเสียเมื่อแอปพลิเคชันล่ม

ดูเพิ่มเติมที่