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:
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!