在Golang中,你可以使用标准库"net/http"来创建一个简单的Web服务器,并使用自定义的HTTP处理器来记录访问日志。以下是一个简单的示例,展示了如何在CentOS上使用Golang记录访问日志:
首先,确保你已经安装了Golang。如果还没有安装,可以参考官方文档进行安装:https://golang.org/doc/install
创建一个名为main.go的文件,并添加以下代码:
package main
import (
"fmt"
"log"
"net/http"
"os"
"time"
)
func main() {
http.HandleFunc("/", accessLogHandler(indexHandler))
log.Println("Server started on :8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal(err)
}
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func accessLogHandler(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
next.ServeHTTP(w, r)
duration := time.Since(start)
log.Printf("%s %s %s %v", r.RemoteAddr, r.Method, r.URL.Path, duration)
})
}
这个示例中,我们创建了一个简单的Web服务器,监听8080端口。accessLogHandler函数是一个中间件,用于记录访问日志。它会在每个请求处理完成后记录客户端的IP地址、请求方法、URL路径和处理时间。
main.go文件的目录,并运行以下命令来构建并运行程序:go build main.go
./main
curl或其他HTTP客户端测试服务器:curl http://localhost:8080
log.Printf调用中使用log.Output函数,并将日志输出重定向到文件。首先,在main函数中创建一个日志文件:logFile, err := os.OpenFile("access.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatal(err)
}
defer logFile.Close()
log.SetOutput(logFile)
现在,访问日志将被记录到access.log文件中。
这就是在CentOS上使用Golang记录访问日志的方法。你可以根据需要修改代码以满足你的需求。