Golang で実行コマンドの出力をリアルタイムでログインにリダイレクトする方法は?

Patricia Arquette
リリース: 2024-11-17 12:38:01
オリジナル
466 人が閲覧しました

How to Redirect Exec Command Output to Your Log in Real Time in Golang?

Golang: 実行出力をログにコピーする

問題:

exec.Command を使用してプロセスを実行する場合、どのようにすればよいですかその出力をログインにリダイレクトしますreal-time?

コンテキスト:

プロセスが完了するのを待ってからその結合された出力をログに記録する従来のアプローチは、長時間実行されているプロセスや未完了のプロセスには適していません。 。リアルタイムでの stdout への書き込みも、ターミナルを使用しないサービスには役に立ちません。

解決策:

プロセス出力をリアルタイムでキャプチャしてログに記録するには、パイプを利用できます:

stdout, err := cmd.StdoutPipe()
if err != nil {
    return 0, err
}

// Start the command after setting up the pipe
if err := cmd.Start(); err != nil {
    return 0, err
}

// Read the command's stdout line by line
in := bufio.NewScanner(stdout)

for in.Scan() {
    log.Printf(in.Text()) // Log each line
}

if err := in.Err(); err != nil {
    log.Printf("error: %s", err)
}
ログイン後にコピー

このアプローチでは、ゴルーチン。

以上がGolang で実行コマンドの出力をリアルタイムでログインにリダイレクトする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート