Log ทั้ง 5 ระดับ
ช่วงนี้ผมกำลังอ่านหนังสือ The DevOps Handbook แล้วเจอคำอธิบายของ Log 5 ระดับที่ผมเห็นบ่อย ๆ คิดว่าอาจจะมีประโยชน์กับคนอ่าน ก็เลยเอามาแบ่งปันครับ
DEBUG
เป็นรายละเอียดลึก ๆ ของโปรแกรม ซึ่งโปรแกรมเมอร์จดไว้เพื่อ debug ปัญหาบน production ซึ่งปรกติจะปิดไว้ และเปิดชั่วคราวเมื่อจำเป็น
จากประสบการณ์ของผม ในระบบที่ใหญ่มาก ๆ debug log จะเปิดเป็นส่วน ๆ ตาม feature หรือ component ได้ เพื่อไม่ให้กระทบกับ performance โดยรวมของระบบมากเกินไป และบางระบบก็รองรับการเปิดและปิดโดยไม่ต้อง restart server ด้วย
INFO
เป็นพฤติกรรมของ user หรือสิ่งที่ระบบทำ เช่น เริ่มตัดบัตรเครดิต เป็นต้น
WARN
เอาไว้เตือนสิ่งที่อาจจะทำให้เกิด error ได้ เช่น เตือนเวลา database ตอบช้ากว่าเวลาที่เรากำหนดไว้ บ่อยครั้ง log ระดับนี้จะ trigger alert และทำให้ทีมรู้ตัวว่าต้องเริ่มวิเคราะห์ปัญหาละโดยทีมอาจจะดู log อื่น ๆ ประกอบเพื่อหาว่าอะไรทำให้เกิดการเตือนครั้งนี้
ERROR
เอาไว้แจ้ง error เช่น API call แล้วได้ error หรืออาจจะเป็น internal error ต่าง ๆ
จากประสบการณ์ของผม บางครั้ง log ประเภทนี้คนที่พัฒนากับคนดูแลระบบจะมาตกลงกัน ว่า error ประเภทไหนบ้างที่ต้อง monitor หรือ trigger system alert
FATAL
อันนี้เอาไว้แจ้งกรณีที่ระบบต้องปิดตัวลง เช่น เชื่อมต่อ network ไม่ได้เป็นต้น
วิธีเลือกระหว่าง WARN กับ ERROR
ในฐานะคนพัฒนา บางครั้งผมรู้สึกว่าเส้นแบ่งระหว่าง WARN กับ ERROR มันเบลอ ๆ แยกยากมากเลย
ผมชอบเทคนิคในการแยกระหว่าง WARN กับ ERROR ที่ถูกแบ่งปันในหนังสือมาก เพราะมันทำได้เร็วดี เค้าบอกให้ถามตัวเองว่าอยากโดนปลุกขึ้นมาตอนตี 4 เพื่ออ่านสิ่งนี้ไหม? ถ้าคำตอบคือใช่ แสดงว่าเป็น ERROR แต่ถ้าไม่ใช่ ก็ยังเป็นระดับ WARN ได้