请求日志 本文未发布 发布文章
Logger
Logger 中间件记录 Fiber HTTP 请求/响应 的详细信息。
目录
常数
func New(config ...Config) fiber.Handler
示例
首先确保导入了所需的软件包
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
初始化 / 默认配置
// 默认中间件配置
app.Use(logger.New())
记录远程 IP 和端口
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
记录请求ID
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// 更多选项, 见配置部分
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
更改时区和时间格式
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Jan-2006",
TimeZone: "America/New_York",
}))
自定义文件编写器
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
Output: file,
}))
配置
// Config 定义了中间件的配置.
type Config struct {
// Next 定义了一个函数,当返回 true 时跳过这个中间件.
//
// 选项. 默认: nil
Next func(c *fiber.Ctx) bool
// Format 定义了记录的 tags
//
// 选项. 默认: [${time}] ${status} - ${latency} ${method} ${path}\n
Format string
// TimeFormat https://programming.guide/go/format-parse-string-time-date-example.html
//
// 选项. 默认: 15:04:05
TimeFormat string
// 可以指定时区, 例如 "UTC" and "America/New_York" and "Asia/Chongqing"等
//
// 选项. 默认: "Local"
TimeZone string
// TimeInterval 是时间戳更新前的延迟时间
//
// 选项. 默认: 500 * time.Millisecond
TimeInterval time.Duration
// Output is a writter where logs are written
//
// 选项: os.Stderr
Output io.Writer
}
默认配置
var ConfigDefault = Config{
Next: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Output: os.Stderr,
}
常数
// Logger 变量
const (
TagPid = "pid"
TagTime = "time"
TagReferer = "referer"
TagProtocol = "protocol"
TagPort = "port"
TagIP = "ip"
TagIPs = "ips"
TagHost = "host"
TagMethod = "method"
TagPath = "path"
TagURL = "url"
TagUA = "ua"
TagLatency = "latency"
TagStatus = "status" // 响应状态
TagResBody = "resBody" // 响应体
TagQueryStringParams = "queryParams" // 请求查询参数
TagBody = "body" // 请求体
TagBytesSent = "bytesSent"
TagBytesReceived = "bytesReceived"
TagRoute = "route"
TagError = "error"
TagHeader = "header:" // 不推荐: 改用 TagReqHeader
TagReqHeader = "reqHeader:" // 请求头
TagRespHeader = "respHeader:" // 响应头
TagQuery = "query:" // query 请求
TagForm = "form:" // form 请求
TagCookie = "cookie:" // cookie 请求
TagLocals = "locals:"
// 颜色
TagBlack = "black"
TagRed = "red"
TagGreen = "green"
TagYellow = "yellow"
TagBlue = "blue"
TagMagenta = "magenta"
TagCyan = "cyan"
TagWhite = "white"
TagReset = "reset"
)
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。