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

如何在保持順序的同時將命令輸出重新導向到控制台和日誌檔案?

DDD
發布: 2024-11-04 03:42:01
原創
144 人瀏覽過

How to Redirect Command Output to Both Console and Log File while Maintaining Order?

將命令輸出重新導向到控制台和日誌檔案

要同時顯示和記錄命令的stdout 和stderr,同時保留輸出順序,您可以使用標準庫的io .MultiWriter.

程式碼片段

<code class="go">package main

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

func main() {
    // Logging capability
    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()
    mwriter := io.MultiWriter(f, os.Stdout)
    cmd := exec.Command("ls")
    cmd.Stderr = mwriter
    cmd.Stdout = mwriter
    err = cmd.Run() //blocks until sub process is complete
    if err != nil {
        panic(err)
    }
}</code>
登入後複製

說明

  1. 開啟一個檔案進行日誌記錄並建立一個結合該檔案和標準輸出的MultiWriter。
  2. 建立一個指令,並指定 stdout 和 stderr 都應使用 MultiWriter。
  3. 執行該命令,這會將輸出即時列印到控制台和日誌文件,同時保持原始輸出順序.

以上是如何在保持順序的同時將命令輸出重新導向到控制台和日誌檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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