การดู : 0

12/04/2026 18:16น.

Ep.17 Go กับ Logging - บันทึกทุกเหตุการณ์ในโปรแกรม

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