[파이썬] `mongoengine` 로깅 설정하기

로그 기능은 개발 중인 애플리케이션의 디버깅 및 추적에 매우 유용합니다. mongoengine에서도 로그 기능을 사용하여 MongoDB와의 상호작용을 추적할 수 있습니다. 이 블로그 포스트에서는 Python에서 mongoengine 로깅을 설정하는 방법에 대해 알아보겠습니다.

로깅 라이브러리 가져오기

먼저, mongoengine 로깅에 필요한 로깅 라이브러리를 가져와야 합니다. Python에서 기본적으로 제공되는 logging 라이브러리를 사용할 것입니다. 다음과 같이 logging 모듈을 가져옵니다.

import logging

로거 설정하기

로거(logger)는 로그 기록을 생성하는 객체입니다. logging 모듈을 사용하여 mongoengine 로거를 설정할 수 있습니다. 로거는 다음과 같이 설정될 수 있습니다.

logger = logging.getLogger('mongoengine')
logger.setLevel(logging.DEBUG)

위 예시에서는 'mongoengine'이라는 이름의 로거를 설정하고, 로그 레벨을 DEBUG로 설정하였습니다. 로그 레벨은 로그의 중요도를 나타내며, 다음과 같은 단계로 나뉩니다.

핸들러 추가하기

핸들러(handler)는 로그 메시지를 적절한 위치로 보내는 역할을 합니다. 로그를 콘솔에 출력하도록 핸들러를 추가해봅시다.

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)

logger.addHandler(console_handler)

위 예시에서는 StreamHandler를 사용하여 콘솔에 로그를 출력하도록 설정하였습니다. 로그 메시지에 시간, 로거 이름, 로그 레벨, 메시지를 포함하도록 포맷팅하는 동시에, 해당 포맷을 콘솔 핸들러에 적용시켰습니다.

사용 예시

이제 mongoengine 로그 설정이 완료되었습니다. 이제 실제로 mongoengine을 사용하는 코드에 적용해보겠습니다.

import logging
from mongoengine import connect

logger = logging.getLogger('mongoengine')
logger.setLevel(logging.DEBUG)

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)

logger.addHandler(console_handler)

# MongoDB에 연결
connect('my_database')

# 예제 쿼리
logger.info("새로운 사용자 생성")
User(name="John Doe").save()

logger.info("사용자 검색")
users = User.objects(name="John Doe")
for user in users:
    logger.debug(f"사용자: {user.name}, 이메일: {user.email}")

위 예시에서는 mongoengine 모델을 사용하여 MongoDB와 상호작용하는 코드입니다. 로그 레벨에 따라 터미널에서 출력되는 로그 메시지의 범위를 조절할 수 있습니다.

결론

이제 mongoengine에서 로깅을 설정할 수 있는 방법을 배웠습니다. 이를 통해 MongoDB와의 상호작용을 추적하고 디버깅하는데 도움이 됩니다. 로깅은 개발 및 유지보수 과정에서 매우 유용한 도구이므로 적극적으로 활용해보시기 바랍니다.