首頁  >  文章  >  後端開發  >  如何在 Go 中同時登入控制台和檔案?

如何在 Go 中同時登入控制台和檔案?

DDD
DDD原創
2024-11-11 01:19:02869瀏覽

How to Log to Both Console and File Simultaneously in Go?

同時記錄到Go 中的控制台和文件

要將日誌訊息定向到文件,程式碼通常使用log.SetOutput(logFile ) 。但是,如果您想要控制台輸出和記錄到文件,這裡有一個使用 io.MultiWriter 的解決方案。

什麼是 io.MultiWriter?

一個 io.MultiWriter允許同時將資料寫入多個目的地。它類似於 Unix tee 命令的行為。

解決方案

要登入控制台和檔案:

  1. 建立一個用於記錄日誌的檔案:
logFile, err := os.OpenFile("log.txt", os.O_CREATE | os.O_APPEND | os.O_RDWR, 0666)
if err != nil {
    panic(err)
}
  1. 建立一個MultiWriter 以組合控制台和檔案輸出:
mw := io.MultiWriter(os.Stdout, logFile)
  1. 設定預設輸出目的地日誌:
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中文網其他相關文章!

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