ホームページ > バックエンド開発 > Golang > 実行出力を Go のログインにリダイレクトするにはどうすればよいですか?

実行出力を Go のログインにリダイレクトするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-06 14:36:02
オリジナル
473 人が閲覧しました

How to Redirect Exec Output to a Log in Go?

実行出力を Go のログインにコピーする

Go で、長時間実行または終了していないプロセスの出力をログにリダイレクトする挑戦的になる可能性があります。プロセスが完了するのを待つことで単純な出力キャプチャが可能になりますが、非ターミナル環境でのリアルタイム ロギングには別のアプローチが必要です。

解決策の 1 つは、プロセスの標準出力をバッファされたスキャナーに接続するパイプを作成することです。

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 パイプを作成し、コマンドを開始し、スキャナーを使用して出力を 1 行ずつ読み取ります。その後、必要に応じて各行をログに記録したり、処理したりできます。この方法で Stdout を処理すると、プロセスの実行中にプロセスの出力をログにリダイレクトでき、サービスの重要な情報をタイムリーにログに記録できます。

以上が実行出力を Go のログインにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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