linux

如何通过Golang日志追踪请求流程

小樊
52
2025-09-28 06:06:32
栏目: 编程语言

在Golang中,可以使用标准库"log"或者第三方库(如logrus、zap等)来实现日志记录。为了追踪请求流程,我们可以在关键点记录日志,包括请求开始、处理过程和请求结束。以下是一个简单的示例,使用标准库"log"来追踪请求流程:

package main

import (
	"fmt"
	"log"
	"net/http"
	"time"
)

func main() {
	http.HandleFunc("/", requestHandler)
	log.Println("Server started on port 8080")
	log.Fatal(http.ListenAndServe(":8080", nil))
}

func requestHandler(w http.ResponseWriter, r *http.Request) {
	startTime := time.Now()
	log.Printf("Request started: %s %s", r.Method, r.URL.Path)

	// 模拟处理过程
	time.Sleep(1 * time.Second)

	log.Printf("Request finished: %s %s, duration: %v", r.Method, r.URL.Path, time.Since(startTime))
	fmt.Fprintf(w, "Hello, Golang!")
}

在这个示例中,我们在requestHandler函数中记录了请求开始和结束的日志。当收到一个HTTP请求时,我们首先记录请求的开始,然后模拟处理过程(这里使用time.Sleep模拟),最后记录请求结束的日志并返回响应。

如果你想要更高级的日志功能,可以考虑使用第三方库,如logrus或zap。这些库提供了更多的功能,例如结构化日志、日志级别、日志格式化等。使用这些库的方法类似,只需将标准库"log"替换为相应的第三方库即可。

0
看了该问题的人还看了