Fiber Log
프로그램 동작을 관찰하고 문제를 진단하거나 해당 경보를 구성하는 데 로그를 사용할 수 있습니다. 잘 구조화된 로그를 정의하면 검색 효율이 향상되고 문제 처리가 용이해집니다.
Fiber는 표준 출력에 로그를 출력하는 기본 방법을 제공합니다. 또한 log.Info
, log.Errorf
, log.Warnw
와 같은 여러 전역 함수를 제공합니다.
로그 레벨
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
사용자 지정 로그
Fiber는 다양한 로깅 라이브러리에 적응하기 위해 AllLogger
인터페이스를 제공합니다.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
로그 출력
참고: Fatal
레벨에서 메서드를 호출하면 로그를 출력한 후 프로그램 실행이 중단됩니다. 신중하게 사용하십시오. 서로 다른 레벨에서 직접 로그를 출력하는 경우 messageKey
에 입력되며 기본적으로 msg
로 설정됩니다.
log.Info("안녕하세요, 세계!")
log.Debug("괜찮으세요?")
log.Info("42는 생명, 우주 및 모든 것에 대한 대답입니다.")
log.Warn("우리는 공격 받고 있습니다!")
log.Error("휴스턴, 문제가 발생했습니다.")
log.Fatal("긴 시간동안, 그리고 모든 것에 감사합니다.")
log.Panic("시스템이 다운되었습니다.")
다양한 레벨에서 로그를 형식 지정 및 출력하는 경우, 모든 메서드는 f
로 끝납니다.
log.Debugf("안녕 %s", "소년")
log.Infof("%d는 생명, 우주 및 모든 것에 대한 대답입니다.", 233)
log.Warnf("우리는 공격 받고 있습니다, %s!", "보스")
log.Errorf("%s, 문제가 발생했습니다.", "마스터 시푸")
log.Fatalf("긴 시간동안, 그리고 %s에 대해 감사합니다.", "바나나")
키와 값으로 메시지 출력. 키와 값이 짝지어지지 않은 경우, KEYVALS UNPAIRED
가 출력됩니다.
log.Debugw("", "안녕", "소년")
log.Infow("", "숫자", 233)
log.Warnw("", "직책", "보스")
log.Errorw("", "이름", "마스터 시푸")
log.Fatalw("", "과일", "바나나")
전역 로그
프로젝트에서 간단한 로그 함수만 사용하고 언제든지 전역적으로 출력하려면 전역 로그를 제공합니다.
import "github.com/gofiber/fiber/v2/log"
log.Info("정보")
log.Warn("경고")
위 코드는 표준 출력에 대한 기본 log.DefaultLogger
를 사용합니다. 이미 구현된 어댑터는 contrib
폴더에서 찾을 수도 있으며, 자체 구현한 Logger
를 사용하여 전역 로거를 설정할 수 있습니다.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// 사용자 정의 로거 주입
fiberlog.SetLogger(customLogger)
레벨 설정
log.SetLevel
은 이 레벨보다 낮은 로그는 출력되지 않도록 설정합니다. 기본 로그 레코더는 LevelTrace
입니다.
이 메서드는 동시성 안전하지 않음에 유의하십시오.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
출력 설정
log.SetOutput
은 로깅의 출력 대상을 설정합니다. 기본적으로 로거는 콘솔에 로그를 출력합니다.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
출력 대상을 파일로 설정합니다.
// test.log 파일에 출력
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
출력 대상을 콘솔 및 파일로 설정합니다.
// test.log 파일에 출력
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)
컨텍스트 바인딩
컨텍스트를 설정하고, 다음 메소드를 사용하여 지정된 컨텍스트에 바인딩된 CommonLogger
인스턴스를 반환합니다.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
참고: 이는 Fiber 프레임워크의 기본 로깅 라이브러리입니다. 물론, 다른 잘 알려진 Go 오픈소스 로깅 라이브러리를 선택할 수도 있습니다.