Iris搭建路由模块controller+审计中间件
以下是一个使用Iris框架搭建的简单路由模块,并包含审计日志记录的例子。
package main
import (
"fmt"
"github.com/kataras/iris"
"github.com/kataras/iris/middleware/logger"
"github.com/kataras/iris/middleware/recover"
"time"
)
func main() {
app := iris.New()
// 日志记录中间件
app.Use(logger.New(logger.Config{
// 日志格式
Format: "时间: ${time} | 方法: ${method} | 路径: ${path} | 状态码: ${status} | 响应时间: ${latency_human}\n",
TimeFormat: "2006-01-02 15:04:05",
// 日志级别
Level: "info",
}))
// 异常恢复中间件
app.Use(recover.New())
// 审计日志记录中间件
app.Use(AuditLogMiddleware)
// 注册路由
party := app.Party("/api/v1")
{
party.Get("/hello", func(ctx iris.Context) {
ctx.JSON(iris.Map{"message": "Hello, World!"})
})
}
// 运行服务器
app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
}
// AuditLogMiddleware 审计日志记录中间件
func AuditLogMiddleware(ctx iris.Context) {
startTime := time.Now()
defer func() {
endTime := time.Now()
latency := endTime.Sub(startTime)
path := ctx.Path()
method := ctx.Method()
status := ctx.GetStatusCode()
fmt.Printf("审计日志: 方法=%s, 路径=%s, 状态码=%d, 响应时间=%s\n", method, path, status, latency)
}()
ctx.Next() // 调用后续中间件或路由处理器
}
这段代码首先配置了Iris的日志记录中间件来记录每个请求的详细信息。接着,定义了一个AuditLogMiddleware
审计日志记录中间件,它在请求处理前记录开始时间,在处理后记录结束时间、响应状态码和耗时,从而实现了简单的审计日志记录功能。最后,在/api/v1/hello
路由上注册了一个简单的处理函数,返回一个JSON响应。
评论已关闭