명령 출력을 콘솔과 로그 파일로 동시에 리디렉션
명령의 stdout 및 stderr을 콘솔과 로그 파일 모두로 리디렉션하려면 실시간으로 Go에서 io.MultiWriter 유형을 사용할 수 있습니다. 방법은 다음과 같습니다.
제공된 코드 조각에서는 cmd의 Stdout 및 Stderr 필드가 각각 os.Stdout 및 os.Stderr로 설정되어 있으므로 코드는 콘솔로만 리디렉션됩니다. 콘솔과 로그 파일 모두로 리디렉션하려면 다음과 같이 코드를 수정하십시오.
<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() mwriter := io.MultiWriter(f, os.Stdout) cmd := exec.Command("php", "randomcommand.php") cmd.Stdout = mwriter cmd.Stderr = mwriter if err := cmd.Run(); err != nil { log.Fatal(err) } }</code>
mwriter 변수는 로그 파일과 표준 출력을 모두 포함하는 io.MultiWriter의 인스턴스입니다. 명령의 Stdout 및 Stderr를 이 mwriter로 설정하면 명령의 출력이 두 위치에 동시에 기록됩니다.
randomcommand.php 스크립트는 동일하게 유지되어 stdout과 stderr에 20번씩 번갈아 기록할 수 있습니다. Go 프로그램을 실행하면 출력이 실시간으로 콘솔에 인쇄되고 지정된 로그 파일에도 기록되어 stdout 및 stderr에 대한 정확한 쓰기 순서가 유지됩니다.
위 내용은 Go에서 명령 출력을 콘솔과 로그 파일로 동시에 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!