2014-01-08 25 views
14

我正在使用下面的簡單服務器。我想知道如何爲記錄時間戳,方法,請求url和http響應代碼的所有請求設置訪問日誌。如何爲http.ListenAndServe設置訪問/錯誤日誌

http.HandleFunc("/foo", funcFoo) 
err := http.ListenAndServe("127.0.0.1:2074", nil) 
+0

對於簡單的http.ListenAndServe類型實現,您可以使用包裝函數,就像這裏一樣https://medium.com/@matryer/the-http-handlerfunc-wrapper-technique-in-golang-c60bf76e6124 – kadalamittai

回答

20

到這裏看看:http://github.com/gorilla/handlers

http.Handle("/foo", funcFoo) 
err := http.ListenAndServe("127.0.0.1:2074", handlers.LoggingHandler(os.Stdout, http.DefaultServeMux)) 

這將記錄在整個服務器的任何傳入連接。 os.Stdout可以被提供io.Writer(即文件,HTTP流等)的任何東西代替。如果你希望它是每個路由,你可以這樣做:

http.Handle("/foo", handlers.LoggingHandler(os.Stdout, funcFoo)) 

它還將與gorilla/mux和其他路由器/是http.Handler兼容的框架工作。