在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記錄訪問日志的方法。你可以根據需要修改代碼以滿足你的需求。