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를 로그 파일과 stdout의 조합으로 정의함으로써 명령 출력을 두 대상에 동시에 효과적으로 쓸 수 있습니다. cmd.Run()은 명령이 완료될 때까지 차단하여 출력 순서가 유지되도록 합니다.
이 솔루션은 모든 요구 사항을 충족합니다.
위 내용은 콘솔에 명령 출력을 동시에 기록하고 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!