如何在 Go 中將日誌寫入檔案
嘗試使用 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") }
要解決此問題,程式碼應使用 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")
根據Go文檔,os.Open是用來讀取文件的,不適合設定日誌輸出。另一方面,os.OpenFile 允許開啟檔案進行讀取和寫入。透過設定 os.O_APPEND,日誌條目將附加到文件末尾,而不是覆蓋現有內容。
以上是為什麼我的 Go 程式碼無法將日誌寫入文件,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!