首頁  >  文章  >  後端開發  >  如何將命令輸出同時寫入控制台和日誌檔案?

如何將命令輸出同時寫入控制台和日誌檔案?

Patricia Arquette
Patricia Arquette原創
2024-11-04 05:19:291035瀏覽

How Do I Simultaneously Write Command Output to Console and Log File?

同時將命令輸出寫入控制台和日誌檔案

您希望將命令的輸出重新導向到控制台和日誌檔案。現有程式碼將輸出傳送到控制台,但不記錄它。若要重定向兩個串流,請使用下面描述的技術。

要實現您的目標,請考慮以下方法:

將Stdout 和Stderr 重新導向到MultiWriter

建立一個結合檔案和標準輸出的MultiWriter。然後,在運行命令之前,將此 MultiWriter 指派給命令的 Stdout 和 Stderr 流。

範例程式碼

<code class="go">package main

import (
    "io"
    "log"
    "os"
    "os/exec"
)

func main() {
    // Open the log file for writing
    f, err := os.OpenFile("log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
    if err != nil {
        log.Fatalf("Error opening file: %v", err)
    }
    defer f.Close()

    // Create a MultiWriter that combines the log file and standard output
    mwriter := io.MultiWriter(f, os.Stdout)

    // Construct the command
    cmd := exec.Command("ls")

    // Redirect Stdout and Stderr to the MultiWriter
    cmd.Stdout = mwriter
    cmd.Stderr = mwriter

    // Run the command
    err = cmd.Run()
    if err != nil {
        panic(err)
    }
}</code>

此程式碼開啟一個日誌文件,建立一個MultiWriter,將指令的流設定為 MultiWriter,並執行指令。輸出將按正確的順序即時重定向到控制台和日誌檔案。

以上是如何將命令輸出同時寫入控制台和日誌檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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