>백엔드 개발 >Golang >Go에서 net/http에 대한 사용자 정의 로깅을 어떻게 구현할 수 있나요?

Go에서 net/http에 대한 사용자 정의 로깅을 어떻게 구현할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-29 13:50:14900검색

How Can I Implement Custom Logging for net/http in Go?

net/http의 사용자 정의 로그인

net/http 패키지는 Go 애플리케이션에서 HTTP 요청 및 응답을 처리하는 편리한 방법을 제공합니다. 그러나 오류 보고를 위해 자체 기본 로거를 사용합니다. 사용자 정의된 오류 로깅의 경우 net/http의 서버 구조에 대한 사용자 정의 로거를 지정할 수 있습니다. 이 문서에서는 이를 달성하는 방법을 보여줍니다.

사용자 정의 로거 구현

내부적으로 Zap 로거를 사용하는 AppLogger라는 사용자 정의 로거 구현이 있다고 가정합니다. 이 사용자 정의 로거를 net/http와 통합하려면 io.Writer 인터페이스를 구현하고 AppLogger를 사용하여 오류를 기록하는 새로운 유형을 생성할 수 있습니다.

type serverJsonWriter struct {
    io.Writer
}

func (w serverJsonWriter) Write(p []byte) (n int, err error) {
    // Here you would implement custom logging logic using your AppLogger
    // ...
    return len(p), nil
}

서버 구조체 채우기

서버 구조체와 함께 사용자 정의 로거를 사용하려면 ErrorLog 필드를 인스턴스로 설정하기만 하면 됩니다. serverJsonWriter 유형입니다. 또한 log.Logger를 초기화하기 위해 AppLogger가 래핑하는 zap logger를 사용해야 합니다.

logger, err := cfg.Build()
if err != nil {
    // Handle error
}

server := &http.Server{
    Addr:     addr,
    Handler:  handler,
    ErrorLog: logger.New(&serverJsonWriter{}, "", 0),
}

이 방법을 구현하면 net/http 오류가 사용자 지정 사양에 따라 기록되므로 더 많은 작업이 가능합니다. 애플리케이션의 로깅 및 오류 보고를 제어합니다.

위 내용은 Go에서 net/http에 대한 사용자 정의 로깅을 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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