首頁 >後端開發 >Golang >為什麼我的 Go 日誌訊息沒有寫入檔案?

為什麼我的 Go 日誌訊息沒有寫入檔案?

Patricia Arquette
Patricia Arquette原創
2024-12-10 00:46:11436瀏覽

Why Aren't My Go Log Messages Writing to the File?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn