Add structured logging for HTTP server errors

This commit is contained in:
Zoltán Papp
2026-02-13 12:42:00 +01:00
parent 3508144575
commit 97a561c56b
2 changed files with 28 additions and 4 deletions

21
proxy/log.go Normal file
View File

@@ -0,0 +1,21 @@
package proxy
import (
stdlog "log"
log "github.com/sirupsen/logrus"
)
const (
// HTTP server type identifiers for logging
logtagFieldHTTPServer = "http-server"
logtagValueHTTPS = "https"
logtagValueACME = "acme"
logtagValueDebug = "debug"
)
// newHTTPServerLogger creates a standard library logger that writes to logrus
// with the specified server type field.
func newHTTPServerLogger(logger *log.Logger, serverType string) *stdlog.Logger {
return stdlog.New(logger.WithField(logtagFieldHTTPServer, serverType).WriterLevel(log.WarnLevel), "", 0)
}

View File

@@ -221,8 +221,9 @@ func (s *Server) ListenAndServe(ctx context.Context, addr string) (err error) {
// Only start HTTP server for HTTP-01 challenge type
if s.ACMEChallengeType == "http-01" {
s.http = &http.Server{
Addr: s.ACMEChallengeAddress,
Handler: s.acme.HTTPHandler(nil),
Addr: s.ACMEChallengeAddress,
Handler: s.acme.HTTPHandler(nil),
ErrorLog: newHTTPServerLogger(s.Logger, logtagValueACME),
}
go func() {
if err := s.http.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
@@ -272,8 +273,9 @@ func (s *Server) ListenAndServe(ctx context.Context, addr string) (err error) {
debugHandler.SetCertStatus(s.acme)
}
s.debug = &http.Server{
Addr: debugAddr,
Handler: debugHandler,
Addr: debugAddr,
Handler: debugHandler,
ErrorLog: newHTTPServerLogger(s.Logger, logtagValueDebug),
}
go func() {
s.Logger.Infof("starting debug endpoint on %s", debugAddr)
@@ -304,6 +306,7 @@ func (s *Server) ListenAndServe(ctx context.Context, addr string) (err error) {
Addr: addr,
Handler: s.meter.Middleware(accessLog.Middleware(web.AssetHandler(s.auth.Protect(s.proxy)))),
TLSConfig: tlsConfig,
ErrorLog: newHTTPServerLogger(s.Logger, logtagValueHTTPS),
}
httpsErr := make(chan error, 1)