Use custom logger middleware

tokarchuk/v1.17
Unknown 11 years ago
parent c593578a55
commit 04e5d5b71f
  1. 44
      modules/middleware/logger.go
  2. 13
      web.go

@ -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)
}
}

@ -46,11 +46,22 @@ func checkRunMode() {
log.Info("Run Mode: %s", strings.Title(martini.Env)) log.Info("Run Mode: %s", strings.Title(martini.Env))
} }
func newMartini() *martini.ClassicMartini {
r := martini.NewRouter()
m := martini.New()
m.Use(middleware.Logger())
m.Use(martini.Recovery())
m.Use(martini.Static("public"))
m.MapTo(r, (*martini.Routes)(nil))
m.Action(r.Handle)
return &martini.ClassicMartini{m, r}
}
func runWeb(*cli.Context) { func runWeb(*cli.Context) {
checkRunMode() checkRunMode()
log.Info("%s %s", base.AppName, base.AppVer) log.Info("%s %s", base.AppName, base.AppVer)
m := martini.Classic() m := newMartini()
// Middlewares. // Middlewares.
m.Use(render.Renderer(render.Options{Funcs: []template.FuncMap{base.TemplateFuncs}})) m.Use(render.Renderer(render.Options{Funcs: []template.FuncMap{base.TemplateFuncs}}))

Loading…
Cancel
Save