[파이썬] 도커 컨테이너와 호스트 간 로깅 설정

도커(Docker)는 컨테이너화된 환경에서 애플리케이션을 실행하기 위한 플랫폼입니다. 도커 컨테이너는 가볍고 분리된 환경에서 독립적으로 실행되기 때문에 로깅은 매우 중요한 부분입니다. 즉, 컨테이너 내부에서 발생한 로그를 호스트로 전달하고 관리하는 것이 필요합니다.

이번 포스트에서는 파이썬을 사용하여 도커 컨테이너와 호스트 간의 로깅 설정을 어떻게 할 수 있는지 살펴보겠습니다.

로깅 라이브러리 설치

먼저, 로깅을 위해 파이썬 logging 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다:

pip install logging

컨테이너 내부에서 로그 기록

파이썬에서 로깅을 사용하기 위해서는 로깅 설정을 먼저 해야 합니다. 다음은 간단한 예시입니다:

import logging

# 로그 설정
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] - %(message)s",
    handlers=[
        logging.FileHandler("app.log"),
        logging.StreamHandler()
    ]
)

# 로그 출력
logging.info("This is an information message")
logging.warning("This is a warning message")
logging.error("This is an error message")

위 코드에서는 logging.basicConfig() 함수를 사용하여 로그를 출력하기 위한 기본 설정을 정의했습니다. 로그 레벨은 logging.INFO로 설정되어 있으며, 로그 포맷은 %(asctime)s [%(levelname)s] - %(message)s으로 지정되었습니다. 파일 핸들러와 스트림 핸들러를 함께 사용하여 로그를 파일(app.log)에 기록하고 콘솔에 출력하도록 설정되었습니다.

호스트에서 컨테이너 로그 확인

로깅을 완료한 후에는 컨테이너 내부에서 생성된 로그를 호스트에서 확인할 수 있어야 합니다. 이는 도커의 로깅 드라이버를 사용하여 구현할 수 있습니다. 도커는 여러 로깅 드라이버를 제공하며, 가장 일반적인 드라이버는 json-file 이며 기본적으로 활성화되어 있습니다.

기본적으로, json-file 드라이버는 도커 컨테이너 로그를 /var/lib/docker/containers/<container_id>/<container_id>-json.log 경로에 저장합니다. 이 로그 파일은 호스트 시스템에서 접근할 수 있으며, 다음과 같이 확인할 수 있습니다:

$ sudo cat /var/lib/docker/containers/<container_id>/<container_id>-json.log

위 명령어에서 <container_id>는 컨테이너의 식별자입니다.

또는, 더 편리하게 docker logs <container_id> 명령어를 사용할 수 있습니다. 이 명령어는 자동으로 컨테이너 로그 파일을 찾아 출력해줍니다.

결론

파이썬을 사용하여 도커 컨테이너와 호스트 간의 로깅 설정을 살펴보았습니다. 로깅은 애플리케이션 디버깅과 모니터링에 매우 중요한 부분이므로 제대로 설정되어야 합니다. 컨테이너 내부에서 로그를 기록하는 방법과 호스트에서 로그를 확인하는 방법을 익힘으로써 애플리케이션의 로깅 관리를 더욱 효율적으로 할 수 있습니다.

참고 자료: