Go实战全家桶之四: gomini迷你框架之集成性能统计功能
package main
import (
"fmt"
"net/http"
"time"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
e := echo.New()
// 注册中间件以记录请求的处理时间
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Skipper: func(c echo.Context) bool {
// 跳过对 /metrics 路径的日志记录
return c.Path() == "/metrics"
},
Format: `{"time":"${time_rfc3339}","id":"${id}","remote_ip":"${remote_ip}","host":"${host}",` +
`"method":"${method}","uri":"${uri}","status":${status},"error":"${error}","latency":${latency},` +
`"latency_human":"${latency_human}","bytes_in":${bytes_in},"bytes_out":${bytes_out}}` + "\n",
}))
// 注册一个路由处理函数
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
// 启动服务器
server := &http.Server{
Addr: ":8080",
Handler: e,
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
}
e.Logger.Fatal(server.ListenAndServe())
}
这段代码使用了Echo web框架来创建一个简单的HTTP服务器,并使用middleware.LoggerWithConfig
中间件记录请求的处理时间。它展示了如何配置中间件来跳过对特定路径(例如/metrics
)的日志记录,并自定义日志格式。这是一个实践中的例子,展示了如何将日志记录集成到Web应用程序中。
评论已关闭