centos

如何用Golang在CentOS记录访问日志

小樊
43
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
看了该问题的人还看了