>  기사  >  백엔드 개발  >  Golang에서 실시간으로 Exec 명령 출력을 로그인으로 리디렉션하는 방법은 무엇입니까?

Golang에서 실시간으로 Exec 명령 출력을 로그인으로 리디렉션하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-17 12:38:01462검색

How to Redirect Exec Command Output to Your Log in Real Time in Golang?

Golang: Exec 출력을 로그에 복사

문제:

exec.Command를 사용하여 프로세스를 실행할 때 어떻게 할 수 있습니까? 출력을 로그인으로 리디렉션합니다. 실시간?

컨텍스트:

프로세스가 완료될 때까지 기다린 다음 결합된 출력을 기록하는 기존 접근 방식은 장기 실행되거나 완료되지 않은 프로세스에 적합하지 않습니다. . 실시간으로 stdout에 쓰는 것도 터미널을 사용하지 않는 서비스에는 도움이 되지 않습니다.

해결책:

실시간으로 프로세스 출력을 캡처하고 기록하려면 , 파이프를 활용할 수 있습니다.

stdout, err := cmd.StdoutPipe()
if err != nil {
    return 0, err
}

// Start the command after setting up the pipe
if err := cmd.Start(); err != nil {
    return 0, err
}

// Read the command's stdout line by line
in := bufio.NewScanner(stdout)

for in.Scan() {
    log.Printf(in.Text()) // Log each line
}

if err := in.Err(); err != nil {
    log.Printf("error: %s", err)
}

이 접근 방식을 사용하면 다음을 사용하여 stdout과 stderr을 모두 캡처할 수 있습니다. 고루틴.

위 내용은 Golang에서 실시간으로 Exec 명령 출력을 로그인으로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.