mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-30 17:00:57 -06:00
Merge pull request #10601 from owncloud/proxy_context_canceled_log
feat: improve logs when a context is canceled in the proxy
This commit is contained in:
@@ -343,6 +343,7 @@ func loadMiddlewares(logger log.Logger, cfg *config.Config,
|
||||
chimiddleware.RealIP,
|
||||
chimiddleware.RequestID,
|
||||
middleware.AccessLog(logger),
|
||||
middleware.ContextLogger(logger),
|
||||
middleware.HTTPSRedirect,
|
||||
middleware.Security(cspConfig),
|
||||
router.Middleware(serviceSelector, cfg.PolicySelector, cfg.Policies, logger),
|
||||
|
||||
26
services/proxy/pkg/middleware/context_logger.go
Normal file
26
services/proxy/pkg/middleware/context_logger.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/log"
|
||||
)
|
||||
|
||||
// ContextLogger is a middleware to use a logger associated with the request's
|
||||
// context which includes general information of the request.
|
||||
func ContextLogger(logger log.Logger) func(http.Handler) http.Handler {
|
||||
return func(next http.Handler) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := logger.With().
|
||||
Str("remoteAddr", r.RemoteAddr).
|
||||
Str(log.RequestIDString, r.Header.Get("X-Request-ID")).
|
||||
Str("proto", r.Proto).
|
||||
Str("method", r.Method).
|
||||
Str("path", r.URL.Path).
|
||||
Str("query", r.URL.RawQuery).
|
||||
Str("fragment", r.URL.Fragment).
|
||||
Logger().WithContext(r.Context())
|
||||
next.ServeHTTP(w, r.WithContext(ctx))
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/owncloud/ocis/v2/services/proxy/pkg/config"
|
||||
"github.com/owncloud/ocis/v2/services/proxy/pkg/proxy/policy"
|
||||
"github.com/owncloud/ocis/v2/services/proxy/pkg/router"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
// MultiHostReverseProxy extends "httputil" to support multiple hosts with different policies
|
||||
@@ -41,6 +42,16 @@ func NewMultiHostReverseProxy(opts ...Option) (*MultiHostReverseProxy, error) {
|
||||
ri.Rewrite()(r)
|
||||
}
|
||||
|
||||
rp.ErrorHandler = func(rw http.ResponseWriter, req *http.Request, err error) {
|
||||
reqLogger := zerolog.Ctx(req.Context())
|
||||
if ev := reqLogger.Error(); ev.Enabled() {
|
||||
ev.Err(err).Msg("error happened in MultiHostReverseProxy")
|
||||
} else {
|
||||
rp.logger.Err(err).Msg("error happened in MultiHostReverseProxy")
|
||||
}
|
||||
rw.WriteHeader(http.StatusBadGateway)
|
||||
}
|
||||
|
||||
tlsConf := &tls.Config{
|
||||
MinVersion: tls.VersionTLS12,
|
||||
InsecureSkipVerify: options.Config.InsecureBackends, //nolint:gosec
|
||||
|
||||
Reference in New Issue
Block a user