コマンド Stdout および Stderr のコンソールとログの同時出力
提供されたコードの目的は、コマンド stdout および stderr をコンソールに出力することです。コマンド自体を変更することなく、リアルタイムで同時にコンソールの順序でファイルにログを記録します。
これを実現するには、io.MultiWriter タイプを利用できます。その方法は次のとおりです。
<code class="go">package main import ( "io" "log" "os" "os/exec" ) func main() { // Logging capability 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() // Define a MultiWriter that includes both the log file and stdout multiWriter := io.MultiWriter(f, os.Stdout) // Set stdout and stderr of the command to the MultiWriter cmd := exec.Command("php", "randomcommand.php") cmd.Stdout = multiWriter cmd.Stderr = multiWriter if err := cmd.Run(); err != nil { log.Fatal(err) } }</code>
ログ ファイルと標準出力の組み合わせとして multiWriter を定義することで、コマンド出力を両方の宛先に同時に書き込むことができます。 cmd.Run() はコマンドが完了するまでブロックし、出力順序が維持されるようにします。
このソリューションはすべての要件を満たします。
以上がコマンド出力のログとコンソールへの出力を同時に行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。