You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
what-is-my-ip/logger.go

36 lines
699 B
Go

package main
import (
"log"
"net/http"
"os"
"time"
)
// Logger interface
type Logger interface {
Println(v ...interface{})
Printf(format string, v ...interface{})
}
// LoggerHandler interface
type LoggerHandler interface {
Logger
ServeHTTP(http.ResponseWriter, *http.Request, http.HandlerFunc)
}
// NewLogger returns a logger interface
func NewLogger() LoggerHandler {
return &logger{log.New(os.Stdout, appLabel, log.Ldate|log.Lmicroseconds)}
}
type logger struct {
Logger
}
func (l *logger) ServeHTTP(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
start := time.Now()
next(rw, r)
l.Printf("Completed %s to %s in %v", r.Method, r.URL.Path, time.Since(start))
}