parent
c593578a55
commit
04e5d5b71f
@ -0,0 +1,44 @@ |
||||
// Copyright 2014 The Gogs Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package middleware |
||||
|
||||
import ( |
||||
"fmt" |
||||
"log" |
||||
"net/http" |
||||
"runtime" |
||||
"time" |
||||
|
||||
"github.com/codegangsta/martini" |
||||
) |
||||
|
||||
var isWindows bool |
||||
|
||||
func init() { |
||||
isWindows = runtime.GOOS == "windows" |
||||
} |
||||
|
||||
func Logger() martini.Handler { |
||||
return func(res http.ResponseWriter, req *http.Request, ctx martini.Context, log *log.Logger) { |
||||
start := time.Now() |
||||
log.Printf("Started %s %s", req.Method, req.URL.Path) |
||||
|
||||
rw := res.(martini.ResponseWriter) |
||||
ctx.Next() |
||||
|
||||
content := fmt.Sprintf("Completed %v %s in %v", rw.Status(), http.StatusText(rw.Status()), time.Since(start)) |
||||
if !isWindows { |
||||
switch rw.Status() { |
||||
case 200: |
||||
content = fmt.Sprintf("\033[1;32%s\033[0m", content) |
||||
case 304: |
||||
content = fmt.Sprintf("\033[1;33%s\033[0m", content) |
||||
case 404: |
||||
content = fmt.Sprintf("\033[1;31%s\033[0m", content) |
||||
} |
||||
} |
||||
log.Println(content) |
||||
} |
||||
} |
Loading…
Reference in new issue