Log Level สำคัญไฉน
ทุกวันนี้เวลาที่เราจะหาต้นตอของปัญหาที่เกิดขึ้นใน Software ของเราที่ Production สิ่งที่จะมาช่วยเราในการค้นหาปัญหานั้นได้ก็คือ Log, Trace หรือ Metric โดยใช้พวก Tools ต่าง ๆ ที่ปัจจุบันมักจะใช้กันก็พวก ELK, Elasticsearch, Grafana, Zipkin, Kibana ซึ่งจุดนี้มันถือเป็นจุด High Level ไปแล้ว… โดยของที่มันถูกส่งต่อไปถึง Tools พวกนั้นหลายอย่างที่นำมาเก็บเป็น Datasource ก็คือ พระเอกของเรา “log” นั่นเอง แต่ก็ยังมีเหล่าพัฒนาซอฟแวร์จำนวนมาก ที่ยังไม่เข้าใจว่า Log level คืออะไร
วันนี้ผมจะมาเขียนถึง Log Level ว่าอันที่จริง มันมีกันอยู่กี่ Level แล้วควรใช้ Log level ไหน เวลาไหน
Log level
Log level โดย default จะถูกแบ่งด้วยกัน 8 ประเภท ดังนี้
ALL: Log level นี้จะแสดงทุก ๆ Log level ของเรา “ยกเว้น Level OFF” โดยปกติเราจะไม่เห็น Log level นี้กันใน Source code ของเรา
TRACE: Log level นี้จะเป็นการที่เราจะเขียนลงไป จะเป็นการ debug แบบละเอียด และ มักจะใช้ตรวจจับการไหลผ่านของโปรแกรมของเรา ซึ่งเราไม่ควรเปิด log level นี้บน Production ปัจจุบัน เราก็มักจะไม่ค่อยเห็น Log level นี้กันบน Source code ของเรากันสักเท่าไหร่
DEBUG: Log level นี้เรามักจะเห็นกันบ่อย ๆ แล้วก็ “มักจะพลาด” ลืมปิดบน Production เราไม่ควรปล่อย Log level นี้ออกไปบน Production เนื่องจาก Level นี้ มักจะเขียนเอาไว้เพื่อ debug โปรแกรมของเรา
INFO: Log level นี้ เหล่านักพัฒนาซอฟแวร์จะใช้กันเยอะที่สุด ส่วนมากจะใช้เขียนตอนอยู่ทางเข้า กับทางออก
WARN: Log level นี้เหมาะกับการแสดง Event ที่มีโอกาสที่จะทำให้เกิด Error
ERROR: Log level นี้เรามักจะเห็นกันในส่วนของการเกิด Error cases ต่าง ๆ ของโปรแกรม เราจะเห็น Log level นี้บ่อยมาก ๆ แต่ควรจะน้อยกว่า Info
FATAL: Log level นี้เมื่อเกิดขึ้น นั่นคือหายนะ เราควรเขียน Log level นี้ในส่วนที่สำคัญของโปรเจคอย่างมาก
OFF: Log level นี้จะเป็นการปิด Log ไม่ให้ออกเลย ไม่ว่าเราจะตั้ง Log เอาไว้ Level ไหนก็ตาม
Conclusion
ผมมองว่าเรื่อง Log ถือเป็นเรื่องที่สำคัญมากนะครับ นอกจากเราจะให้ความสนใจในการ Coding แล้ว เราควรใส่ใจในเรื่องของการเขียน Log Level ด้วย เนื่องจากมันจะช่วยเราบอกได้ว่าโปรแกรมของท่านทำงานไปถึงไหน เกิดอะไรขึ้น เป็นประโยชน์กับเราในการหาข้อผิดพลาดของโปรแกรมอีกด้วย
ก็หวังว่าเหล่านักพัฒนาโปรแกรมจะให้ความสนใจในเรื่องของการจัดการ Log Level กันด้วยนะครับ แล้วก็อย่าลืม Correlation ID กับเรื่อง Sensitive Data กันด้วยนะครับ เวลาจะ Write Log