在嘗試使用Go 記錄到檔案時,嘗試了多種方法,包括:
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") }
然而,儘管創建了日誌檔案(logfile),但沒有向其中寫入任何資訊。
解決方案涉及使用os.OpenFile 而不是 os.Open,它提供了對檔案存取權限的更多控制。以下程式碼成功寫入日誌檔案:
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")
此方法利用以下標誌的os.OpenFile:
透過使用os.OpenFile,您可以指定必要的檔案存取權限,以確保日誌成功寫入檔案。
以上是如何在 Go 中成功將日誌寫入檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!