Bộ ghi chép
Là một middleware cho Fiber được sử dụng để ghi lại thông tin chi tiết về các yêu cầu và phản hồi HTTP.
Giao diện
func New(config ...Config) fiber.Handler
Ví dụ
Nhập gói middleware của framework web Fiber:
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
Lưu ý: Thứ tự đăng ký là quan trọng. Chỉ có các route được đăng ký sau middleware này mới được ghi lại. Do đó, middleware này nên là một trong những middleware đầu tiên được đăng ký.
Sau khi khởi tạo ứng dụng Fiber, có thể đăng ký middleware theo cách sau:
// Khởi tạo với cấu hình mặc định
app.Use(logger.New())
// Hoặc tùy chỉnh cấu hình
// Ghi lại IP và cổng từ xa
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
// Ghi lại ID yêu cầu
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// Đối với các tùy chọn khác, xem phần Config
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
// Thay đổi múi giờ và định dạng thời gian
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Jan-2006",
TimeZone: "America/New_York",
}))
// Người viết tệp tùy chỉnh
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("lỗi mở tệp: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
Output: file,
}))
// Thêm thẻ tùy chỉnh
app.Use(logger.New(logger.Config{
CustomTags: map[string]logger.LogFunc{
"custom_tag": func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
return output.WriteString("Đây là một thẻ tùy chỉnh")
},
},
}))
// Hàm gọi lại sau khi ghi lại
app.Use(logger.New(logger.Config{
TimeFormat: time.RFC3339Nano,
TimeZone: "Asia/Shanghai",
Done: func(c *fiber.Ctx, logString []byte) {
if c.Response().StatusCode() != fiber.StatusOK {
reporter.SendToSlack(logString)
}
},
}))
// Tắt màu khi đầu ra theo định dạng mặc định
app.Use(logger.New(logger.Config{
DisableColors: true,
}))
Cấu hình
Thuộc tính | Kiểu | Mô tả | Giá trị Mặc định |
---|---|---|---|
Tiếp theo | func(*fiber.Ctx) bool |
Tiếp theo xác định một hàm bỏ qua middleware khi nó trả về true. | nil |
Hoàn tất | func(*fiber.Ctx, []byte) |
Hoàn tất là một hàm được gọi sau khi ghi chuỗi log của yêu cầu vào Output, với chuỗi log được chuyển làm tham số. | nil |
CustomTags | map[string]LogFunc |
tagFunctions xác định các thao tác thẻ tùy chỉnh. | map[string]LogFunc |
Định dạng | string |
Định dạng xác định các thẻ log. | [${time}] ${status} - ${latency} ${method} ${path}\n |
Định dạngThời gian | string |
Định dạngThời gian xác định định dạng thời gian của dấu thời gian log. | 15:04:05 |
Múi giờ | string |
Múi giờ có thể được chỉ định là "UTC", "America/New_York", "Asia/Chongqing", v.v. | "Local" |
Khoảng thời gian | time.Duration |
Khoảng thời gian là thời gian trễ trước khi cập nhật dấu thời gian. | 500 * time.Millisecond |
Output | io.Writer |
Output là một bộ ghi được sử dụng để ghi log. | os.Stdout |
TắtMàu | bool |
TắtMàu xác định liệu đầu ra log có nên được màu hay không. | false |
enableColors | bool |
Trường nội bộ để bật màu sắc trong đầu ra log. (Đây không phải là một trường có thể cấu hình) | - |
enableLatency | bool |
Trường nội bộ để bật đo lường độ trễ trong log. (Đây không phải là một trường có thể cấu hình) | - |
timeZoneLocation | *time.Location |
Trường nội bộ cho vị trí múi giờ. (Đây không phải là một trường có thể cấu hình) | - |
Cấu hình mặc định
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Output: os.Stdout,
DisableColors: false,
}
Hằng số
// Biến ghi nhật ký
const (
TagPid = "pid" // ID Quá trình
TagTime = "time" // Thời gian
TagReferer = "referer" // Người gửi
TagProtocol = "protocol" // Giao thức
TagPort = "port" // Cổng
TagIP = "ip" // Địa chỉ IP
TagIPs = "ips" // Địa chỉ IP
TagHost = "host" // Máy Chủ
TagMethod = "method" // Phương thức Yêu cầu
TagPath = "path" // Đường dẫn
TagURL = "url" // URL
TagUA = "ua" // Điều hành Người dùng
TagLatency = "latency" // Trì trệ
TagStatus = "status" // Trạng thái Phản hồi
TagResBody = "resBody" // Nội dung phản hồi
TagReqHeaders = "reqHeaders" // Tiêu đề Yêu cầu
TagQueryStringParams = "queryParams" // Tham số Truy vấn
TagBody = "body" // Nội dung Yêu cầu
TagBytesSent = "bytesSent" // Số byte Đã gửi
TagBytesReceived = "bytesReceived" // Số byte Đã nhận
TagRoute = "route" // Đường đi
TagError = "error" // Lỗi
// Không còn hỗ trợ: Sử dụng TagReqHeader thay thế
TagHeader = "header:" // Tiêu đề Yêu cầu
TagReqHeader = "reqHeader:" // Tiêu đề Yêu cầu
TagRespHeader = "respHeader:" // Tiêu đề Phản hồi
TagQuery = "query:" // Truy vấn
TagForm = "form:" // Mẫu
TagCookie = "cookie:" // Cookie
TagLocals = "locals:" // Biến Cục bộ
// Màu sắc
TagBlack = "black" // Đen
TagRed = "red" // Đỏ
TagGreen = "green" // Xanh lá cây
TagYellow = "yellow" // Vàng
TagBlue = "blue" // Xanh dương
TagMagenta = "magenta" // Màu đỏ tím
TagCyan = "cyan" // Xanh lơ
TagWhite = "white" // Trắng
TagReset = "reset" // Đặt lại Màu
)