如何为http.ListenAndServe设置访问/错误日志

时间:2014-01-08 05:34:32

标签: go

我将以下内容用于简单的服务器。我想知道如何为记录时间戳,方法,请求URL和http响应代码的所有请求设置访问日志。

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

1 个答案:

答案 0 :(得分:24)

看看这里: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兼容的其他路由器/框架一起使用。