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

Property
Type
Description
Default

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