PHpullh
학습 라이브러리/Go/구조화된 로깅 전략

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 를 사용하세요.

Continue Learning

Go 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.