首頁 > 後端開發 > Golang > 如何將 Exec 輸出重新導向到 Go 中的日誌?

如何將 Exec 輸出重新導向到 Go 中的日誌?

Linda Hamilton
發布: 2024-11-06 14:36:02
原創
482 人瀏覽過

How to Redirect Exec Output to a Log in Go?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板