gmifs/middleware/logger.go

35 lines
676 B
Go
Raw Normal View History

package middleware
import (
"fmt"
"log"
"strings"
"time"
2024-06-08 22:01:48 +03:00
"gitrepo.ru/neonxp/gmifs/gemini"
)
2021-07-09 20:41:50 +03:00
func Logger(log *log.Logger, prefix string) func(gemini.Handler) gemini.Handler {
return func(next gemini.Handler) gemini.Handler {
2021-07-09 20:09:25 +03:00
fn := func(w gemini.ResponseWriter, r *gemini.Request) {
t := time.Now()
2021-07-09 20:09:25 +03:00
ri := gemini.NewInterceptor(w)
next.ServeGemini(ri, r)
ri.Flush()
ip := strings.Split(r.RemoteAddr, ":")[0]
2021-07-12 13:52:10 +03:00
fmt.Fprintf(log.Writer(), "%s%s - - [%s] \"%s\" %d %d - %v\n",
2021-07-09 20:41:50 +03:00
prefix,
ip,
t.Format("02/Jan/2006:15:04:05 -0700"),
r.URL.Path,
2021-07-09 20:09:25 +03:00
ri.Code,
2021-07-12 13:52:10 +03:00
ri.Body.Len(),
time.Since(t),
)
}
return gemini.HandlerFunc(fn)
}
}