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