將Exec 輸出複製到Go 中的日誌
在Go 中,將長時間運行或未完成的進程的輸出重新導向到日誌可能具有挑戰性。在等待進程完成時可以進行簡單的輸出捕獲,但非終端環境中的即時日誌記錄需要不同的方法。
一種解決方案涉及建立一個管道以將進程的標準輸出連接到緩衝掃描器:
stdout, err := cmd.StdoutPipe() if err != nil { return 0, err } // start the command after having set up the pipe if err := cmd.Start(); err != nil { return 0, err } // read command's stdout line by line in := bufio.NewScanner(stdout) for in.Scan() { log.Printf(in.Text()) // write each line to your log, or anything you need } if err := in.Err(); err != nil { log.Printf("error: %s", err) }
此程式碼建立一個標準輸出管道,啟動命令,然後使用掃描器逐行讀取輸出。然後可以根據需要記錄或處理每一行。透過以這種方式處理 Stdout,您可以在進程仍在運行時將進程的輸出重定向到日誌,確保及時記錄服務的重要資訊。
以上是如何將 Exec 輸出重新導向到 Go 中的日誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!