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.
36 lines
699 B
Go
36 lines
699 B
Go
8 years ago
|
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))
|
||
|
}
|