在 Go 中將日誌訊息寫入檔案
在 Go 中,記錄到檔案可能是一項簡單的任務。但是,某些方法可能會遇到錯誤,讓您想知道為什麼日誌訊息沒有寫入檔案。
失敗的方法
提供的程式碼顯示了三個不成功的嘗試記錄到檔案時:
func TestLogging(t *testing.T) { // ... // 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") }
這些嘗試失敗,因為os.Open() 用於開啟日誌文件,以唯讀方式開啟文件,這與log.SetOutput() 所需的寫入不相容。
解決方案
要成功記錄到文件,您應該使用os.OpenFile() 改為:
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( ) 使用讀取、寫入、建立和附加功能開啟檔案權限,讓您成功地將日誌訊息寫入檔案。請記得在日誌記錄完成後使用 defer f.Close().
關閉文件以上是為什麼我的 Go 日誌訊息沒有寫入檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!