请求日志 本文未发布 发布文章

未匹配的标注

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"
)

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/log...

译文地址:https://learnku.com/docs/gofiber/2.x/log...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~