Files
hamlogger/internal/router/loggingmw.go
Олег Бородин ada2a49a64 initial import of sources
2024-06-18 10:15:22 +02:00

50 lines
1.2 KiB
Go

package router
import (
"fmt"
//"time"
//"sigs.k8s.io/yaml"
)
func SampleMiddleware(next Handler) Handler {
return HandlerFunc(func(ctx *Context) {
next.ServeHTTP(ctx)
//fmt.Printf("%s %s %s %s %s", time.Now().Format(time.RFC3339), ctx.Req.RemoteAddr,
// ctx.Req.Method, ctx.Req.URL.String(), ctx.Req.Proto)
fmt.Printf("%s %s %s %s", ctx.Req.RemoteAddr, ctx.Req.Method, ctx.Req.URL.String(),
ctx.Req.Proto)
})
}
func NewLoggingMiddleware(print func(string, ...any)) func(Handler) Handler {
mw := func(next Handler) Handler {
return newLoggingHandler(next, print)
}
return mw
}
type loggingHandler struct {
next Handler
print func(string, ...any)
}
func newLoggingHandler(next Handler, print func(string, ...any)) *loggingHandler {
return &loggingHandler{
next: next,
print: print,
}
}
func (hand loggingHandler) ServeHTTP(ctx *Context) {
hand.next.ServeHTTP(ctx)
//data, _ := yaml.Marshal(ctx.Req.URL)
//hand.print("%s %s %s %s %s %++v", time.Now().Format(time.RFC3339), ctx.Req.RemoteAddr,
// ctx.Req.Method, ctx.Req.URL.String(), ctx.Req.Proto, ctx.StatusCode)
hand.print("%s %s %s %s %d", ctx.Req.RemoteAddr, ctx.Req.Method, ctx.Req.URL.String(),
ctx.Req.Proto, ctx.StatusCode)
}