등록 순서가 중요합니다. 이 미들웨어 이후에 등록된 모든 라우트만 로깅됩니다. 따라서 미들웨어는 가장 먼저 등록되어야 합니다.
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
Property
Type
Description
Default
Next
func(*fiber.Ctx) bool
Next는 true를 반환할 때 이 미들웨어를 건너뛰는 함수를 정의합니다.
nil
Done
func(*fiber.Ctx, []byte)
Done은 요청에 대한 로그 문자열이 Output으로 작성된 후 호출되는 함수이며 로그 문자열을 매개변수로 전달합니다.