12/04/2026 18:16น.

Ep.17 Go กับ Logging - บันทึกทุกเหตุการณ์ในโปรแกรม
#Superdev School
#โปรแกรมเมอร์
#ภาษาโปรแกรม
#ฝึกเขียนโปรแกรม
#การเขียนโปรแกรม
#log.Panic
#log.Fatal
#log.Print
#การจัดการ Log
#การบันทึกเหตุการณ์
#Logging
#Golang
Go กับ Logging - บันทึกทุกเหตุการณ์ในโปรแกรม
Logging คืออะไร?
Logging คือการบันทึกข้อมูลหรือข้อความที่บอกว่าเกิดอะไรขึ้นในโปรแกรม เช่น บันทึกเมื่อมีการเชื่อมต่อฐานข้อมูลสำเร็จ หรือบันทึกข้อความแจ้งเตือนเมื่อมีข้อผิดพลาด การทำ Logging ช่วยให้เราตรวจสอบปัญหาได้ง่ายขึ้นเมื่อโปรแกรมทำงานผิดพลาด
การใช้งาน Logging เบื้องต้นใน Go
Go มีแพ็กเกจ log ที่ช่วยให้เราทำ Logging ได้อย่างง่ายดาย โดยใช้ฟังก์ชันหลักเช่น log.Print, log.Println, และ log.Printf
อธิบายโค้ด:
log.Println จะพิมพ์ข้อความพร้อมขึ้นบรรทัดใหม่
log.Print จะพิมพ์ข้อความ
log.Printf ใช้แสดงข้อความพร้อมใส่รูปแบบ เช่น %d สำหรับตัวเลข
ตัวอย่างการใช้งาน Logging:
package main
import (
"log"
)
func main() {
log.Println("Starting the application...")
log.Print("This is a regular log message.")
log.Printf("This is a formatted log message: %d", 123)
}
บันทึก Error และ Fatal Log
นอกจากบันทึกข้อความปกติ เรายังสามารถบันทึกข้อความเมื่อเกิดข้อผิดพลาดโดยใช้ log.Fatal และ log.Panic
log.Fatal: บันทึกข้อผิดพลาดและหยุดโปรแกรม
log.Panic: บันทึกข้อผิดพลาดพร้อมแสดง Stack Trace (เส้นทางการทำงานของโปรแกรม) ก่อนหยุดโปรแกรม
ตัวอย่างการใช้งาน:
ในตัวอย่างนี้ log.Fatal จะบันทึกข้อความแล้วหยุดโปรแกรมทันทีเมื่อเกิดข้อผิดพลาด
package main
import (
"log"
"os"
)
func main() {
file, err := os.Open("nonexistent_file.txt")
if err != nil {
log.Fatal("Error opening file:", err)
}
defer file.Close()
}
การบันทึก Log ลงไฟล์แทนการแสดงบนหน้าจอ
บางครั้งเราอาจต้องการเก็บ Log ลงในไฟล์แทนที่จะพิมพ์ลงบนหน้าจอ เพื่อให้สามารถตรวจสอบเหตุการณ์ย้อนหลังได้
ตัวอย่างการบันทึก Log ลงไฟล์:
ในตัวอย่างนี้:
log.SetOutput(file) จะทำให้ข้อความ Log ถูกบันทึกลงในไฟล์ app.log
package main
import (
"log"
"os"
)
func main() {
file, err := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
log.Fatal("Could not open log file:", err)
}
defer file.Close()
log.SetOutput(file) // ตั้งให้ log เขียนลงไฟล์แทนหน้าจอ
log.Println("Starting application...")
log.Println("Logging information to file.")
}
การใช้ Flags เพิ่มรายละเอียดใน Log
เราสามารถเพิ่มรายละเอียดให้ Log โดยใช้ Flags เพื่อบอกให้ Log แสดงวันที่และเวลาของข้อความที่บันทึก
ตัวอย่าง Flags ที่ใช้บ่อย:
log.LstdFlags: แสดงวันที่และเวลา
log.Lshortfile: แสดงตำแหน่งไฟล์ที่เกิดเหตุการณ์
ตัวอย่าง:
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("This is a log message with date, time, and file location.")
สรุปง่ายๆ
- ใช้ log.Print, log.Println, log.Printf สำหรับข้อความปกติ
- ใช้ log.Fatal และ log.Panic สำหรับบันทึกข้อผิดพลาดและหยุดโปรแกรม
- สามารถบันทึก Log ลงไฟล์เพื่อเก็บข้อมูลระยะยาว
- ใช้ Flags เพื่อเพิ่มข้อมูลวันที่ เวลา และตำแหน่งไฟล์ใน Log