두숟갈 스터디 18회
Django의 **logging**과 **signals**를 함께 배우고, 로그·메트릭 운영 팁까지 정리했다.
이번 시간에는 Two Scoops of Django 27장과 28장을 공부했다. 주제는 로깅(logging) 이 누구를 위한 도구인지, 그리고 signals를 어떤 경우에 쓰고 언제 피해야 하는지였다.
진단용 로그는 애플리케이션의 동작과 오류 상황을 추적하는 데 쓰이고, 감사용 로그는 사용자의 행동과 비즈니스 분석을 기록하는 데 쓰인다. 로그는 문제를 재현하고 원인을 찾는 데 유용하며, 단순한 출력보다 훨씬 많은 맥락을 남긴다.
print는 커맨드라인 애플리케이션에서 도움말을 보여줄 때 정도를 제외하면 logging보다 낫지 않다. 반면 log record에는 파일명, 경로, 함수, 라인 번호 같은 정보가 함께 남아 디버깅에 유리하다.
로그 수준은 logging.Logger.setLevel()로 조절할 수 있고, logging.Logger.disabled = True로 비활성화할 수도 있다. 내장 모듈에서 발생한 이벤트도 루트 로거를 통해 애플리케이션의 로그 스트림으로 모을 수 있다.
설정 방식은 크게 세 가지로 정리됐다.
- INI 파일: 실행 중인 설정 변경을 반영할 수 있도록
logging.config.listen()을 함께 쓰는 방식 - dict/JSON 파일: 코드 수정 없이 설정을 관리하고, Python 2.6부터는 표준
json모듈로도 불러올 수 있음 - 코드: 가장 강력하게 모든 설정을 제어할 수 있지만, 소스 수정이 필요함
심화 발표에서는 로그와 메트릭의 흐름도 함께 다뤘다. 애플리케이션에서 로그를 만들고, fluentd로 전달한 뒤, Elasticsearch에 저장·정리하고, Kibana로 보여주는 구조를 소개했다.
로그 운영에 대한 실무적인 기준도 정리했다.
- 로그는 기본적으로 남긴다
- 너무 많아지면 메트릭으로 전환한다
key, value형태처럼 파싱과 문서화가 쉬운 포맷을 선호한다- 로컬에만 쌓지 말고 logrotate로 관리한다
참가자는 로깅이 테스트만큼이나 낯설지만, 앞으로 개발할 때 익숙해져야 할 도구라고 느꼈다. 또한 스터디를 통해 Django뿐 아니라 선배 개발자들의 태도와 팀 문화까지 배울 수 있었고, 앞으로 진행할 프로젝트에서도 로깅을 직접 적용해 볼 계획을 전했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.