溫馨提示×

如何用Golang在CentOS記錄訪問日志

小樊
42
2025-08-18 19:39:35
欄目: 編程語言

在Golang中,你可以使用標準庫"net/http"來創建一個簡單的Web服務器,并使用自定義的HTTP處理器來記錄訪問日志。以下是一個簡單的示例,展示了如何在CentOS上使用Golang記錄訪問日志:

  1. 首先,確保你已經安裝了Golang。如果還沒有安裝,可以參考官方文檔進行安裝:https://golang.org/doc/install

  2. 創建一個名為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路徑和處理時間。

  1. 在終端中,導航到包含main.go文件的目錄,并運行以下命令來構建并運行程序:
go build main.go
./main
  1. 現在,你的Golang Web服務器應該在CentOS上運行,并在每個請求后記錄訪問日志。你可以使用curl或其他HTTP客戶端測試服務器:
curl http://localhost:8080
  1. 若要將訪問日志保存到文件,可以在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記錄訪問日志的方法。你可以根據需要修改代碼以滿足你的需求。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女