체이닝 API와 레벨·샘플링 로깅, 선택적 CBOR 출력을 지원하는 Go용 제로 할당 JSON 로거
sirupsen/logrus
확장 가능한 포매터와 훅을 제공하는 Go용 구조화 로거로, API 호환성을 갖췄으며 현재는 유지보수 모드입니다.
- 스타
- 25,764
- 포크
- 2,297
- 열린 이슈
- 59
- 마지막 커밋
- 22일 전
어떤 프로젝트인가요?
Logrus는 Go용 구조화 로거로, 표준 라이브러리의 log 패키지와 API 호환되므로 기존 log import를 거의 수정하지 않고 바꿔 쓸 수 있습니다. 키-값 필드와 로그 레벨을 포함한 항목을 기록하며, Logstash와 Splunk 같은 로그 집계 시스템을 위해 터미널용 컬러 텍스트, logfmt 스타일 텍스트 또는 JSON으로 출력할 수 있습니다.
로거는 Trace부터 Panic까지 7개 레벨을 지원하고, 모든 io.Writer를 대상으로 로거별 출력 대상을 설정할 수 있으며, WithFields로 재사용 가능한 필드 컨텍스트를 생성할 수 있습니다. 훅을 사용하면 로그 항목을 오류 추적기나 syslog 같은 다른 곳으로 전달할 수 있고, Format 메서드를 구현해 사용자 지정 포매터를 추가할 수도 있습니다. 호출자 정보 표시, 기록된 메시지를 검증하는 테스트 훅, fatal 종료 처리기도 포함되어 있습니다.
이 프로젝트는 유지보수 모드입니다. 유지관리자는 보안 및 버그 수정과 성능 개선에 집중하며, 새 기능은 Go의 log/slog와 같은 상호 운용성 관련 기능으로 제한됩니다. README에서는 최신 Go 구조화 로깅 관행을 고려해 설계된 대안으로 Zerolog, Zap, Apex를 안내합니다.
핵심 기능
- 01표준 라이브러리 log API와 호환되어 바로 대체해 사용할 수 있습니다.
- 02Trace부터 Panic까지 7개 레벨과 구조화된 키-값 필드를 지원합니다.
- 03터미널용 컬러 출력, logfmt 스타일 텍스트, JSON 포매터를 제공합니다.
- 04syslog나 오류 추적기 같은 서비스로 로그 항목을 전달하는 훅을 지원합니다.
- 05간단한 Format 인터페이스를 구현해 사용자 지정 포매터를 추가할 수 있습니다.
- 06단위 테스트에서 기록된 메시지를 검증할 수 있는 테스트 훅을 제공합니다.
활용 사례
- Logstash나 Splunk에서 수집할 수 있도록 Go 서비스에 구조화된 JSON 로그를 추가할 때.
- 호출부를 다시 작성하지 않고 기존 프로젝트를 표준 log 패키지에서 마이그레이션할 때.
- 훅을 통해 오류 레벨 로그 항목을 외부 예외 추적기로 전송할 때.
- 특정 로그 메시지가 출력되었는지 단위 테스트에서 검증할 때.
빠른 시작
- 1
Logrus 모듈을 설치합니다
go get github.com/sirupsen/logrus - 2
Go 코드에서 모듈을 가져와 필드가 포함된 메시지를 로그로 남깁니다
사용 전 알아둘 점
- Logrus는 유지보수 모드이므로 새로운 기능이 추가될 예정은 없습니다.
- README에서는 Zerolog, Zap, Apex와 같은 대안을 안내합니다.
포함된 컬렉션
토픽
자주 묻는 질문
- logrus은(는) 무엇인가요?
- 확장 가능한 포매터와 훅을 제공하는 Go용 구조화 로거로, API 호환성을 갖췄으며 현재는 유지보수 모드입니다. Logrus는 Go용 구조화 로거로, 표준 라이브러리의 log 패키지와 API 호환되므로 기존 log import를 거의 수정하지 않고 바꿔 쓸 수 있습니다. 키-값 필드와 로그 레벨을 포함한 항목을 기록하며, Logstash와 Splunk 같은 로그 집계 시스템을 위해 터미널용 컬러 텍스트, logfmt 스타일 텍스트 또는 JSON으로 출력할 수 있습니다.
- logrus은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- logrus은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- logrus은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. logrus의 마지막 커밋은 2026년 10월 2일입니다.
- logrus은(는) 어디에 사용할 수 있나요?
- Logstash나 Splunk에서 수집할 수 있도록 Go 서비스에 구조화된 JSON 로그를 추가할 때. 호출부를 다시 작성하지 않고 기존 프로젝트를 표준 log 패키지에서 마이그레이션할 때. 훅을 통해 오류 레벨 로그 항목을 외부 예외 추적기로 전송할 때. 특정 로그 메시지가 출력되었는지 단위 테스트에서 검증할 때.
- logrus는 어떻게 설치하나요?
- Logrus 모듈을 설치합니다: go get github.com/sirupsen/logrus Go 코드에서 모듈을 가져와 필드가 포함된 메시지를 로그로 남깁니다
- logrus은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/sirupsen/logrus
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
터미널에서 보기 좋은 출력을 제공하고, 필드 우선 구조의 JSON과 비밀 정보 마스킹을 지원하며 런타임 의존성이 없는 범용 TypeScript 및 JavaScript 로거입니다.
JSON 및 logfmt 로그를 읽기 쉬운 형식으로 보여 주고 필터링, 정렬, 실시간 추적을 지원하는 명령줄 로그 뷰어입니다.
Go용 빠르고 구조화된 레벨 로깅 라이브러리로, 할당이 없는 Logger와 유연한 SugaredLogger API를 제공합니다.
Deno, Node.js, Bun, 브라우저, 엣지 함수에서 실행되는 JavaScript 및 TypeScript용 무의존성 로깅 라이브러리입니다.
하나의 fluent interface로 로그를 Pino, Winston, 클라우드 서비스, 파일, StatsD, OpenTelemetry에 전달하는 통합 TypeScript 로깅 API입니다.