GO · 에러처리
구조화된 로깅 전략
구조화된 로그로 에러를 기록합니다. Go 1.21의 log/slog을 사용합니다.
에러처리중급slogstructured-loggingjsonobservability
핵심 설명
구조화된 로그로 에러를 기록합니다. Go 1.21의 log/slog을 사용합니다.
Go code
package main
import (
"errors"
"log/slog"
"os"
)
func main() {
// 구조화된 로거 생성
logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: slog.LevelDebug,
}))
// 레벨별 로깅
logger.Debug("디버그 메시지", "module", "auth")
logger.Info("사용자 로그인", "user_id", 42, "ip", "192.168.1.1")
logger.Warn("느린 쿼리", "duration_ms", 500, "query", "SELECT...")
// 에러 로깅
err := errors.New("연결 실패")
logger.Error("DB 에러", "error", err, "retry", 3)
// 그룹 로깅
logger.WithGroup("request").Info("요청 처리",
"method", "POST",
"path", "/api/users",
"status", 201,
)
// 기본 로거 교체
slog.SetDefault(logger)
slog.Info("기본 로거 사용", "app", "myapp")
}학습 팁
slog는 Go 1.21 표준 라이브러리입니다. 키-값 쌍으로 구조화된 로그를 JSON이나 텍스트로 출력합니다.
주의할 점
fmt.Println으로 에러를 출력하면 구조화되지 않아 로그 분석이 어렵습니다. 항상 slog를 사용하세요.
자주 묻는 질문
구조화된 로깅 전략란 무엇인가요?
구조화된 로그로 에러를 기록합니다. Go 1.21의 log/slog 을 사용합니다.
구조화된 로깅 전략 학습 시 주의할 점은 무엇인가요?
fmt.Println 으로 에러를 출력하면 구조화되지 않아 로그 분석이 어렵습니다. 항상 slog 를 사용하세요.