Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Berjaya Menulis Log ke Fail dalam Go?

Bagaimana untuk Berjaya Menulis Log ke Fail dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 07:06:13553semak imbas

How to Successfully Write Logs to a File in Go?

Menulis Log ke Fail dalam Go

Dalam percubaan untuk log ke fail menggunakan Go, beberapa pendekatan telah dicuba, termasuk:

func TestLogging(t *testing.T) {
    if !FileExists("logfile") {
        CreateFile("logfile")
    }
    f, err := os.Open("logfile")
    if err != nil {
        t.Fatalf("error: %v", err)
    }

    // attempt #1
    log.SetOutput(io.MultiWriter(os.Stderr, f))
    log.Println("hello, logfile")

    // attempt #2
    log.SetOutput(io.Writer(f))
    log.Println("hello, logfile")

    // attempt #3
    log.SetOutput(f)
    log.Println("hello, logfile")
}

Walau bagaimanapun, walaupun mencipta fail log (fail log), tiada maklumat ditulis kepadanya.

Penyelesaian melibatkan penggunaan os.OpenFile dan bukannya os.Open, yang menawarkan lebih kawalan ke atas kebenaran akses fail. Kod berikut berjaya menulis pada fail log:

f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
if err != nil {
    log.Fatalf("error opening file: %v", err)
}
defer f.Close()

log.SetOutput(f)
log.Println("This is a test log entry")

Pendekatan ini menggunakan os.OpenFile dengan bendera berikut:

  • os.O_RDWR: Membuka fail dalam baca-tulis mod
  • os.O_CREATE: Mencipta fail jika ia tidak wujud
  • os.O_APPEND: Menambah data pada fail jika ia wujud

Dengan menggunakan os.OpenFile, anda boleh menentukan kebenaran akses fail yang diperlukan untuk memastikan log berjaya ditulis ke fail.

Atas ialah kandungan terperinci Bagaimana untuk Berjaya Menulis Log ke Fail dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn