ホームページ >バックエンド開発 >Golang >Golang で実行コマンドの出力をリアルタイムでログインにリダイレクトする方法は?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-17 12:38:01530ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。