50 lines
1.2 KiB
Go
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)
|
|
|
|
}
|