net/http를 사용하여 사용자 정의 형식으로 오류 로깅
net/http에서는 Server.ErrorLog를 사용하여 오류를 로깅할 수 있습니다. 필드. 사용자 정의 형식으로 오류를 기록하려면 기본 로거를 자체 구현으로 바꿀 수 있습니다.
사용자 정의 로깅 구현
사용자 정의 로거를 생성하려면 다음과 같은 유형을 정의합니다. 다음 예에서 볼 수 있듯이 io.Writer 인터페이스를 구현합니다.
type CustomLogger struct { writer io.Writer } func (l *CustomLogger) Write(p []byte) (n int, err error) { // Implement custom logging logic here }
사용자 정의 사용 net/http의 Logger
사용자 정의 로거가 있으면 이를 http.Server의 ErrorLog로 설정할 수 있습니다.
server := &http.Server{ Addr: ":8080", Handler: myHandler, ErrorLog: &CustomLogger{writer: os.Stderr}, }
Zap Logger 사용 net/http 오류 로깅
Zap과 동일한 형식으로 오류를 기록하려면 다음이 필요합니다. 오류 메시지를 Zap 로거에 전달하는 serverJsonWriter 유형을 구현합니다. 방법은 다음과 같습니다.
type serverJsonWriter struct { fw *fwdToZapWriter } func (w serverJsonWriter) Write(p []byte) (n int, err error) { w.fw.logger.Errorw(string(p)) return len(p), nil }
fwdToZapWriter 위치:
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 }
그런 다음 서버에서 serverJsonWriter 유형을 사용할 수 있습니다.
server := &http.Server{ Addr: ":8080", Handler: myHandler, ErrorLog: log.New(&serverJsonWriter{fw: &fwdToZapWriter{logger: myZapLogger}}, "", 0), }
이 단계를 구현하면, Zap을 사용하여 자신만의 맞춤 형식으로 net/http 오류를 기록할 수 있습니다. 로거.
위 내용은 Go\'s net/http 패키지의 오류 로깅을 어떻게 사용자 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!