Logger
Fiber를 위한 Logger 미들웨어는 HTTP 요청/응답 세부사항을 로깅합니다.
Signatures
func New(config ...Config) fiber.Handler
Examples
Fiber 웹 프레임워크의 일부인 미들웨어 패키지를 가져옵니다
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
Fiber 앱을 초기화한 후 다음과 같은 가능성을 사용할 수 있습니다:
// 기본 설정 초기화
app.Use(logger.New())
// 또는 사용자 정의를 위해 설정 확장
// 원격 IP 및 포트 로깅
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
// Request ID 로깅
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// 더 많은 옵션은 Config 섹션 참조
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
// TimeZone 및 TimeFormat 변경
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Jan-2006",
TimeZone: "America/New_York",
}))
// 사용자 정의 파일 Writer
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,
}))
// 사용자 정의 태그 추가
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("it is a custom tag")
},
},
}))
// 로그 작성 후 콜백
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)
}
},
}))
// 기본 형식으로 출력할 때 색상 비활성화
app.Use(logger.New(logger.Config{
DisableColors: true,
}))
Config
Config
Next
func(*fiber.Ctx) bool
Next는 true를 반환할 때 이 미들웨어를 건너뛰는 함수를 정의합니다.
nil
Done
func(*fiber.Ctx, []byte)
Done은 요청에 대한 로그 문자열이 Output으로 작성된 후 호출되는 함수이며 로그 문자열을 매개변수로 전달합니다.
nil
CustomTags
map[string]LogFunc
tagFunctions는 사용자 정의 태그 동작을 정의합니다.
map[string]LogFunc
Format
string
Format은 로깅 태그를 정의합니다.
${time} | ${status} | ${latency} | ${ip} | ${method} | ${path} | ${error}
TimeFormat
string
TimeFormat은 로그 타임스탬프의 시간 형식을 정의합니다.
15:04:05
TimeZone
string
TimeZone은 "UTC", "America/New_York", "Asia/Chongqing" 등과 같이 지정할 수 있습니다.
"Local"
TimeInterval
time.Duration
TimeInterval은 타임스탬프가 업데이트되기 전의 지연 시간입니다.
500 * time.Millisecond
Output
io.Writer
Output은 로그가 작성되는 Writer입니다.
os.Stdout
DisableColors
bool
DisableColors는 로그 출력이 색상화되어야 하는지 여부를 정의합니다.
false
enableColors
bool
로그 출력에서 색상을 활성화하기 위한 내부 필드입니다. (이는 사용자가 구성 가능한 필드가 아닙니다)
-
enableLatency
bool
로그에서 지연 시간 측정을 활성화하기 위한 내부 필드입니다. (이는 사용자가 구성 가능한 필드가 아닙니다)
-
timeZoneLocation
*time.Location
시간대 위치에 대한 내부 필드입니다. (이는 사용자가 구성 가능한 필드가 아닙니다)
-
Default Config
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "${time} | ${status} | ${latency} | ${ip} | ${method} | ${path} | ${error}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Output: os.Stdout,
DisableColors: false,
}
Constants
// Logger variables
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" // response status
TagResBody = "resBody" // response body
TagReqHeaders = "reqHeaders"
TagQueryStringParams = "queryParams" // request query parameters
TagBody = "body" // request body
TagBytesSent = "bytesSent"
TagBytesReceived = "bytesReceived"
TagRoute = "route"
TagError = "error"
// DEPRECATED: Use TagReqHeader instead
TagHeader = "header:" // request header
TagReqHeader = "reqHeader:" // request header
TagRespHeader = "respHeader:" // response header
TagQuery = "query:" // request query
TagForm = "form:" // request form
TagCookie = "cookie:" // request cookie
TagLocals = "locals:"
// colors
TagBlack = "black"
TagRed = "red"
TagGreen = "green"
TagYellow = "yellow"
TagBlue = "blue"
TagMagenta = "magenta"
TagCyan = "cyan"
TagWhite = "white"
TagReset = "reset"
)
Last updated