logging Archive

Tip :: ใช้งาน Asynchronous logging ใน Java

หนึ่งในปัญหาต่อเรื่อง performance ของระบบงานคือการเขียน log ของระบบงานลง file system !!ซึ่งพบว่า ถ้าเปลี่ยนมาใช้การเขียน log แบบ Asynchronous จะดีกว่า Synchronousเป็นเรื่องเล็ก ๆ ที่อาจจะส่งผลเยอะเช่นกันดังนั้นลองมาปรับเปลี่ยนกันดู

Read More…

สรุปการใช้งาน Structured Log ของ Go กัน

ก่อนหน้านี้ Go 1.21 ออกมานั้น มี Structured log package (log/slog) ออกมาให้ใช้งานซึ่งเคยอธิบายการใช้งานเบื้องต้นไว้ที่นี่แต่ว่าต้องไปแบ่งปันเรื่อง logging สำหรับระบบที่พัฒนาด้วย Goจึงทำการอธิบายแบบละเอียดขึ้นไว้หน่อยมาเริ่มกันเลย

Read More…

ลองใช้งาน Structured Logging ใน Go 1.21 rc1

ก่อนนี้เคยอธิบายเรื่อง proposal ของ Structured Logging มาแล้วซึ่งตอนนี้ได้เพิ่มเข้ามาใน Go 1.21 ที่จะออกมาในเดือนสิงหาคมนี้ดังนั้นเรามาลองใช้งานกันหน่อย ซึ่งประกอบไปด้วย package ดังนี้ มาเริ่มกันเลย

Read More…

เรื่องที่น่าสนใจจากบทความเรื่อง Postgres: a better message queue than Kafka?

วันนี้นั่งอ่านบทความเรื่อง Postgres: a better message queue than Kafka?ทำการอธิบายการสร้างระบบ loggingซึ่งทำงานอยู่บน PostgreSQLว่ามีข้อดีและข้อเสียอย่างไร รวมทั้งการปรับปรุงในอนาคตทำไมถึงใช้งาน PostgreSQL แทนที่จะเป็น Apache Kafka สำหรับ message queue

Read More…

Golang :: มาแล้วสำหรับ Proposal: Structured Logging

เพิ่งเห็นว่าใน Go มี proposal ที่น่าสนใจคือ Structured loggingทำให้เราสามารถเขียน log ในรูปแบบที่มีโครงสร้างได้ง่ายขึ้นรวมทั้งเลือกได้ด้วยว่าจะให้มีโครงสร้างในรูปแบบใดเช่น text และ JSON เป็นต้น

Read More…

Golang :: เปลี่ยนมาใช้ zap สำหรับจัดการ logging

ว่าง ๆ นั่งเปลี่ยน logger จากที่ใช้งาน logrus มาเป็น zapโดยสิ่งที่ต้องการให้เหมือนเดิมคือ Log message ในรูปแบบของ JSON Log ออกไปทั้ง file แบบแยกรายวัน และออกที่ console เก็บเฉพาะ log level = error เท่านั้น

Read More…

ทำความรู้จักกับ Loki คือ log system จาก Grafana Labs

Loki คืออะไรคำจำกัดความสั้น ๆ คือ เหมือนกับ Prometheus แต่ใช้สำหรับเก็บข้อมูล log ความสามารถที่น่าสนใจคือ Horizontal scale High availability Log aggregation ออกแบบมาเพื่อให้จัดการได้ง่าย รวมทั้งเรื่องประหยัดค่าใช้จ่าย หรือใช้ให้เกิดประโยชน์สูงสุด

Read More…

จัดการ Log จาก Docker container ด้วย Fluentd

วันนี้มีคำถามเกี่ยวกับการจัดการกับ log ต่าง ๆ ของ Docker container แน่นอนว่า มีการจัดการหลายแบบ ยกตัวอย่างเช่น การ map path ของไฟล์ log ออกมา ใช้ agent หรือตัว shipper ในการขนออกมา เช่น LogStash, Beats และ Fluentd เป็นต้น มาดูตัวอย่างของการนำ Fluentd มาใช้กันหน่อย

Read More…

ลด ละ เลิก การสร้าง Logging application กันเถอะ !!

ในการสร้างระบบงานนั้น สิ่งหนึ่งที่ขาดไปไม่ได้เลยคือ logging การทำงานต่าง ๆ ของระบบ ดังนั้นทำให้เกิด code ที่เกี่ยวกับ logging จำนวนมาก เผลอ ๆ อาจจะมากกว่า code ส่วนอื่น ๆ ของระบบอีกต่างหาก ซึ่งผมชอบเรียกระบบเหล่านี้ว่า Logging application !! ผลที่ตามมาก็คือ code อุดมไปด้วย log อ่านยากมาก ๆ code จะทดสอบยากมาก ๆ บ่อยครั้งไม่สามารถเขียน unit test ได้เลย code ดูแลยากอีก !! ดังนั้นนักพัฒนาควรใส่ใจวิธีการจัดการ log มาก ๆ ด้วยนะ มาดูกันว่าทำอย่างไรได้บ้าง

Read More…