>백엔드 개발 >Golang >Go의 net/http 패키지 로그인을 어떻게 사용자 정의할 수 있나요?

Go의 net/http 패키지 로그인을 어떻게 사용자 정의할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-28 02:11:11611검색

How Can I Customize Logging in Go's net/http Package?

사용자 정의 작성기로 net/http 로그인 사용자 정의

net/http의 오류를 사용자 정의 형식으로 기록하려면 http.Server.ErrorLog 필드, log.Logger 구현을 허용합니다. 인터페이스.

사용자 정의 로거 구현

자신만의 로거를 구현하려면 io.Writer 인터페이스를 충족하는 유형을 정의하고 Write 메소드를 구현하여 메시지를 사용자에게 전달합니다. 원하는 로깅 형식. 예:

type AppLogger struct {
    log *zap.SugaredLogger
}

func (l *AppLogger) Write(p []byte) (n int, err error) {
    l.log.Errorw(string(p))
    return len(p), nil
}

net/http와의 통합

net/http와 함께 사용자 정의 로거를 사용하려면 AppLogger 유형의 인스턴스를 ErrorLog 필드에 할당하세요. http.Server:

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

Zap 사용 Logger

Zap 로거를 net/http와 통합하려면 오류 메시지를 Zap 로거에 전달하는 사용자 정의 작성기를 생성할 수 있습니다.

type fwdToZapWriter struct {
    logger *zap.SugaredLogger
}

func (fw *fwdToZapWriter) Write(p []byte) (n int, err error) {
    fw.logger.Errorw(string(p))
    return len(p), nil
}

그런 다음 fwdToZapWriter를 http.Server의 ErrorLog 필드에 추가합니다.

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

이를 구현하여 단계를 거치면 AppLogger 또는 Zap logger에서 제공하는 사용자 정의 형식으로 net/http의 오류가 기록됩니다.

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

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