首頁 > 後端開發 > Golang > 為什麼我的 Go 程式碼無法將日誌寫入文件,如何修復?

為什麼我的 Go 程式碼無法將日誌寫入文件,如何修復?

Barbara Streisand
發布: 2024-12-16 06:34:18
原創
846 人瀏覽過

Why Does My Go Code Fail to Write Logs to a File, and How Can I Fix It?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板