在Golang中,我们可以使用标准库"log"或者第三方库(如logrus、zap等)来记录日志。这里我将为您提供一个使用标准库"log"记录HTTP请求信息的示例。
首先,我们需要导入相关的包:
package main
import (
"log"
"net/http"
)
接下来,我们可以创建一个自定义的日志记录器,用于记录请求信息:
type Logger struct {
logger *log.Logger
}
func NewLogger(prefix string) *Logger {
return &Logger{
logger: log.New(log.Writer(), prefix, log.LstdFlags),
}
}
func (l *Logger) LogRequest(r *http.Request) {
l.logger.Printf("Request: %s %s %s", r.RemoteAddr, r.Method, r.URL.String())
}
现在,我们可以在HTTP处理函数中使用这个自定义的日志记录器来记录请求信息:
func main() {
logger := NewLogger("[HTTP] ")
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
logger.LogRequest(r)
// 处理请求并返回响应
w.Write([]byte("Hello, World!"))
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
在这个示例中,我们创建了一个名为Logger
的结构体,它包含一个*log.Logger
类型的字段。我们还定义了一个NewLogger
函数,用于创建一个新的Logger
实例,并设置日志前缀。LogRequest
方法用于记录请求信息,包括客户端IP地址、HTTP方法和请求URL。
在main
函数中,我们创建了一个Logger
实例,并将其传递给HTTP处理函数。当有请求到达时,处理函数会调用LogRequest
方法记录请求信息。
运行这个程序后,您将看到类似以下的日志输出:
[HTTP] 127.0.0.1:56789 GET /
[HTTP] 127.0.0.1:56790 POST /some-path
这只是一个简单的示例,您可以根据需要对其进行扩展,例如添加更多的请求信息、日志级别等。如果您需要更高级的日志功能,可以考虑使用第三方库,如logrus或zap。