>백엔드 개발 >Golang >내 Go 로그 메시지가 파일에 기록되지 않는 이유는 무엇입니까?

내 Go 로그 메시지가 파일에 기록되지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-10 00:46:11434검색

Why Aren't My Go Log Messages Writing to the File?

Go에서 파일에 로그 메시지 쓰기

Go에서 파일에 로깅하는 것은 간단한 작업이 될 수 있습니다. 그러나 특정 접근 방식에서는 오류가 발생할 수 있으며 로그 메시지가 파일에 기록되지 않는 이유를 궁금해하게 됩니다.

실패한 접근

제공된 코드는 세 번의 실패한 시도를 보여줍니다. 파일에 로깅할 때:

func TestLogging(t *testing.T) {
    // ...

    // Attempt #1
    log.SetOutput(io.MultiWriter(os.Stderr, f))
    log.Println("hello, logfile")

    // Attempt #2
    log.SetOutput(io.Writer(f))
    log.Println("hello, logfile")

    // Attempt #3
    log.SetOutput(f)
    log.Println("hello, logfile")
}

로그 파일을 여는 데 사용되는 os.Open()이 파일을 열기 때문에 이러한 시도는 실패합니다. 읽기 전용이며 log.SetOutput()에 필요한 쓰기와 호환되지 않습니다.

해결 방법

파일에 성공적으로 로그인하려면 os.OpenFile을 사용해야 합니다. () 대신:

f, err := os.OpenFile("testlogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
if err != nil {
    log.Fatalf("error opening file: %v", err)
}
defer f.Close()

log.SetOutput(f)
log.Println("This is a test log entry")

os.OpenFile()은 읽기, 쓰기, 생성 및 추가 권한으로 파일을 열어 다음을 허용합니다. 파일에 로그 메시지를 성공적으로 쓸 수 있습니다. defer f.Close()를 사용하여 로깅이 완료된 후 파일을 닫는 것을 잊지 마세요.

위 내용은 내 Go 로그 메시지가 파일에 기록되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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