同時將命令輸出寫入控制台和日誌檔案
您希望將命令的輸出重新導向到控制台和日誌檔案。現有程式碼將輸出傳送到控制台,但不記錄它。若要重定向兩個串流,請使用下面描述的技術。
要實現您的目標,請考慮以下方法:
將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中文網其他相關文章!