コマンド出力をコンソールとログ ファイルに同時に書き込む
コマンドからの出力をコンソールとログ ファイルの両方にリダイレクトしたいと考えています。既存のコードは出力をコンソールに送信しますが、ログには記録しません。両方のストリームをリダイレクトするには、以下で説明する手法を使用します。
目標を達成するには、次のアプローチを検討してください。
Stdout と Stderr を MultiWriter にリダイレクトします
ファイルと標準出力を結合する MultiWriter を作成します。次に、コマンドを実行する前に、この MultiWriter をコマンドの Stdout ストリームと Stderr ストリームに割り当てます。
サンプル コード
<code class="go">package main import ( "io" "log" "os" "os/exec" ) func main() { // Open the log file for writing f, err := os.OpenFile("log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() // Create a MultiWriter that combines the log file and standard output mwriter := io.MultiWriter(f, os.Stdout) // Construct the command cmd := exec.Command("ls") // Redirect Stdout and Stderr to the MultiWriter cmd.Stdout = mwriter cmd.Stderr = mwriter // Run the command err = cmd.Run() if err != nil { panic(err) } }</code>
このコードは、ログ ファイルを開き、 MultiWriter は、コマンドのストリームを MultiWriter に設定し、コマンドを実行します。出力は、リアルタイムで正しい順序でコンソールとログ ファイルの両方にリダイレクトされます。
以上がコマンド出力をコンソールとログ ファイルに同時に書き込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。