推荐使用gorilla/handlers:强大的Go语言HTTP中间件库
package main
import (
"log"
"net/http"
"github.com/gorilla/handlers"
)
func main() {
// 创建一个简单的HTTP处理函数
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, World!"))
})
// 使用LoggingHandler和CombinedLoggingHandler来记录请求日志
loggedHandler := handlers.LoggingHandler(nil, http.DefaultServeMux)
http.Handle("/", loggedHandler)
// 使用CombinedLoggingHandler时,可以自定义日志格式
customLogFormatter := handlers.LogFormatter(func(r *http.Request, status, size int, duration time.Duration) string {
return fmt.Sprintf("%s - %s %s %s\n", r.RemoteAddr, r.Method, r.RequestURI, r.Proto)
})
customLoggedHandler := handlers.CombinedLoggingHandler(os.Stdout, http.DefaultServeMux, customLogFormatter)
http.Handle("/", customLoggedHandler)
// 启动服务器
log.Fatal(http.ListenAndServe(":8080", nil))
}
这段代码演示了如何使用gorilla/handlers
包中的LoggingHandler
和CombinedLoggingHandler
函数来为HTTP请求添加日志记录功能。它首先创建了一个简单的HTTP处理函数,然后将其与日志记录功能绑定,并启动了一个监听8080端口的HTTP服务器。
评论已关闭