2014-01-08 3 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 совместимы.

Смежные вопросы