Log http requests
This commit is contained in:
		
							parent
							
								
									f592145b60
								
							
						
					
					
						commit
						e8a65a2770
					
				@ -6,6 +6,7 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/julienschmidt/httprouter"
 | 
			
		||||
 | 
			
		||||
@ -42,7 +43,7 @@ var router = httprouter.New()
 | 
			
		||||
func openEndpoint(h handle) httprouter.Handle {
 | 
			
		||||
	return func(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
 | 
			
		||||
		ctx := contextWithParams(r.Context(), params)
 | 
			
		||||
		h(ctx, w, r)
 | 
			
		||||
		logRequest(ctx, w, r, h)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -59,6 +60,18 @@ func protectedEndpoint(h handle) httprouter.Handle {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func logRequest(ctx context.Context, w http.ResponseWriter, r *http.Request, h handle) {
 | 
			
		||||
	startedAt := time.Now()
 | 
			
		||||
	log.Logger().Infof("--> %s %s", r.Method, r.URL.Path)
 | 
			
		||||
	sw := statusRecorder{ResponseWriter: w}
 | 
			
		||||
	h(ctx, sw, r)
 | 
			
		||||
	took := time.Since(startedAt).Truncate(100 * time.Microsecond)
 | 
			
		||||
	if sw.status == 0 {
 | 
			
		||||
		sw.status = http.StatusOK
 | 
			
		||||
	}
 | 
			
		||||
	log.Logger().Infof("<-- %d %s (%s)", sw.status, http.StatusText(sw.status), took)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Rendering
 | 
			
		||||
//
 | 
			
		||||
@ -152,3 +165,13 @@ func (w unbufferedWriter) Write(p []byte) (int, error) {
 | 
			
		||||
	}
 | 
			
		||||
	return n, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type statusRecorder struct {
 | 
			
		||||
	status int
 | 
			
		||||
	http.ResponseWriter
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w statusRecorder) WriteHeader(statusCode int) {
 | 
			
		||||
	w.status = statusCode
 | 
			
		||||
	w.ResponseWriter.WriteHeader(statusCode)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user