首頁 > 後端開發 > Golang > 主體

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

Patricia Arquette
發布: 2024-11-04 05:19:29
原創
989 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!