Repolode
uber-go

uber-go/zap

Go용 빠르고 구조화된 레벨 로깅 라이브러리로, 할당이 없는 Logger와 유연한 SugaredLogger API를 제공합니다.

스타
24,678
포크
1,575
열린 이슈
201
마지막 커밋
지난달

어떤 프로젝트인가요?

Zap은 Go용 로깅 라이브러리로, 타입이 지정된 키-값 필드를 포함한 구조화된 로그 항목을 기록하고 로그 레벨을 지원합니다. 리플렉션 기반 직렬화와 문자열 포맷팅으로 CPU 비용과 메모리 할당이 크게 늘어날 수 있는, 실행 빈도가 높은 코드 경로에서 로그를 남기는 애플리케이션을 대상으로 합니다.

Zap은 두 가지 API를 제공합니다. Logger는 강한 타입의 Field 값을 사용하며 대부분의 호출에서 메모리 할당을 피합니다. SugaredLogger는 타입을 엄격하게 지정하지 않은 키-값 쌍과 printf 스타일 포맷팅을 지원하는 대신 성능이 다소 낮습니다. 두 API 모두 리플렉션을 사용하지 않는 JSON 인코더를 기반으로 합니다. 프로젝트 자체 벤치마크 모음은 zerolog, slog, logrus 등 유사 패키지와 성능을 비교합니다.

라이브러리 문서는 pkg.go.dev에서 확인할 수 있으며, API는 안정 버전으로 표시되어 있고 1.x 시리즈에서는 호환성을 깨는 변경을 계획하고 있지 않습니다. 최신 Go 마이너 버전 두 개가 필요합니다.

핵심 기능

  • 01강한 타입의 Field 값을 사용하는 구조화 로깅.
  • 02타입을 엄격하게 지정하지 않은 키-값 및 printf 스타일 API를 제공하는 SugaredLogger.
  • 03리플렉션을 사용하지 않고 메모리 할당이 없는 JSON 인코더.
  • 04프로덕션 및 개발 프리셋을 제공하는 레벨 로깅.

활용 사례

  • 메모리 할당 오버헤드가 중요한 지연 시간 민감형 Go 서비스의 로깅.
  • 로그 집계 시스템에서 파싱할 수 있는 JSON 로그 출력.
  • 백엔드 서비스의 요청에 구조화된 컨텍스트 필드 추가.

빠른 시작

  1. 1

    go get으로 zap 라이브러리를 설치합니다

    go get -u go.uber.org/zap
  2. 2

    프로덕션 로거를 만들고 SugaredLogger로 로그를 기록합니다

사용 전 알아둘 점

  • Go의 최신 마이너 버전 2개만 지원합니다.

포함된 컬렉션

토픽

자주 묻는 질문

zap은(는) 무엇인가요?
Go용 빠르고 구조화된 레벨 로깅 라이브러리로, 할당이 없는 Logger와 유연한 SugaredLogger API를 제공합니다. Zap은 Go용 로깅 라이브러리로, 타입이 지정된 키-값 필드를 포함한 구조화된 로그 항목을 기록하고 로그 레벨을 지원합니다. 리플렉션 기반 직렬화와 문자열 포맷팅으로 CPU 비용과 메모리 할당이 크게 늘어날 수 있는, 실행 빈도가 높은 코드 경로에서 로그를 남기는 애플리케이션을 대상으로 합니다.
zap은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
zap은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
zap은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. zap의 마지막 커밋은 2026년 9월 16일입니다.
zap은(는) 어디에 사용할 수 있나요?
메모리 할당 오버헤드가 중요한 지연 시간 민감형 Go 서비스의 로깅. 로그 집계 시스템에서 파싱할 수 있는 JSON 로그 출력. 백엔드 서비스의 요청에 구조화된 컨텍스트 필드 추가.
zap는 어떻게 설치하나요?
go get으로 zap 라이브러리를 설치합니다: go get -u go.uber.org/zap 프로덕션 로거를 만들고 SugaredLogger로 로그를 기록합니다
zap은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/uber-go/zap

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트