프로세스 출력을 Golang의 로그로 리디렉션
Golang에서 외부 프로세스를 실행할 때 해당 출력을 즉시 캡처하고 기록하는 것이 유용할 수 있습니다. 프로세스가 완료되기를 기다리고 CombinedOutput()을 사용하면 로깅이 가능하지만 장기 실행되거나 완료되지 않은 프로세스에는 실용적이지 않습니다.
또는 출력하지 않는 서비스의 경우 실시간으로 Stdout에 쓰는 것만으로는 충분하지 않습니다. 터미널. 한 가지 해결책은 효율적인 출력 리디렉션을 위해 파이프를 활용하는 것입니다.
리디렉션을 위해 파이프 활용
파이프는 프로세스 간 연결을 생성하여 데이터 전송을 가능하게 합니다. 프로세스 출력을 로그로 리디렉션하려면 다음 단계를 따르세요.
두 출력 채널을 동시에 처리하기 위한 고루틴을 생성하여 Stderr에 대한 처리기를 추가할 수 있습니다. .
구현 예:
출력 리디렉션을 위해 파이프를 사용하는 다음 코드 조각을 고려하세요.
stdout, err := cmd.StdoutPipe() if err != nil { return 0, err } if err := cmd.Start(); err != nil { return 0, err } in := bufio.NewScanner(stdout) for in.Scan() { log.Printf(in.Text()) } if err := in.Err(); err != nil { log.Printf("error: %s", err) }
이 접근 방식을 사용하면 다음을 효과적으로 수행할 수 있습니다. 적시에 외부 프로세스의 출력을 캡처하고 기록하여 디버깅 및 분석에 귀중한 정보를 사용할 수 있도록 합니다.
위 내용은 외부 프로세스 출력을 실시간으로 Golang의 로그로 리디렉션하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!