同時記錄到Go 中的控制台和文件
要將日誌訊息定向到文件,程式碼通常使用log.SetOutput(logFile ) 。但是,如果您想要控制台輸出和記錄到文件,這裡有一個使用 io.MultiWriter 的解決方案。
什麼是 io.MultiWriter?
一個 io.MultiWriter允許同時將資料寫入多個目的地。它類似於 Unix tee 命令的行為。
解決方案
要登入控制台和檔案:
logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) }
mw := io.MultiWriter(os.Stdout, logFile)
log.SetOutput(mw)設定預設輸出目的地:
設定預設輸出目的地
package main import ( "log" "os" "io" ) func main() { logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666) if err != nil { panic(err) } mw := io.MultiWriter(os.Stdout, logFile) log.SetOutput(mw) log.Println("This is a log message") }範例
以上是如何在 Go 中同時登入控制台和檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!