[파이썬] Tornado에서의 로깅

로깅(logging)은 소프트웨어 개발에서 중요한 요소입니다. 애플리케이션의 동작을 디버깅하고, 오류를 추적하고, 성능을 모니터링하는 데 도움을 줍니다. Tornado는 Python으로 작성된 비동기 웹 프레임워크로, 로깅을 지원하는 강력한 기능을 제공합니다. 이 글에서는 Tornado에서 로깅을 설정하고 사용하는 방법을 알아보겠습니다.

Tornado 로깅 모듈

Tornado는 Python의 표준 logging 모듈을 기반으로 로깅을 구현합니다. 따라서 logging 모듈의 기능을 그대로 사용할 수 있습니다. 로깅 모듈은 애플리케이션에서 발생하는 로그 메시지를 다양한 수준으로 필터링하고, 파일이나 콘솔에 출력하는 등의 작업을 수행할 수 있습니다.

기본적인 로깅 구성

Tornado 애플리케이션에서 로깅을 구성하기 위해 다음과 같은 단계를 따를 수 있습니다:

  1. logging 모듈을 가져옵니다:
    import logging
    
  2. logging 모듈의 기본 설정을 변경합니다. 이 단계는 선택 사항이지만, 필요에 따라서 logging 모듈의 기본 출력 수준과 포맷을 변경할 수 있습니다:
    logging.basicConfig(level=logging.DEBUG, format='[%(levelname)s] %(asctime)s - %(message)s')
    
  3. Tornado 애플리케이션에 로거(logger)를 추가합니다. 로거는 로그 레코드를 수집하고 필요한 작업을 수행하는 객체입니다. Tornado 애플리케이션에는 기본적으로 tornado.application 모듈에 있는 로거가 포함되어 있습니다:
    logger = logging.getLogger('tornado.application')
    
  4. 로그 메시지를 생성하고 출력합니다. 다음은 로그 메시지를 생성하고 로그 레벨에 따라 출력하는 예시입니다:
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    

로그 메시지 출력 위치

Tornado 애플리케이션에서 로그 메시지의 출력 위치는 기본적으로 콘솔(console)입니다. 하지만 원하는 대로 설정할 수도 있습니다. 다음 코드는 로그 메시지를 파일로 출력하는 예시입니다:

file_handler = logging.FileHandler('app.log')
logger.addHandler(file_handler)

위의 코드를 추가하면, 로그 메시지가 “app.log”라는 파일에 출력됩니다.

로그 레벨 설정

로깅의 중요한 측면은 로그 레벨을 설정하는 것입니다. 로그 레벨은 다음과 같은 순서로 정의됩니다: DEBUG < INFO < WARNING < ERROR < CRITICAL. 로그 레벨을 조정하면 어떤 수준의 로그 메시지를 출력할지 결정할 수 있습니다. 예를 들어, 다음 코드는 로그 레벨을 “INFO”로 설정하고, “WARNING” 이상의 로그 메시지만 출력합니다:

logger.setLevel(logging.WARNING)

결론

Tornado에서 로깅은 효과적인 애플리케이션 디버깅과 모니터링에 필수적입니다. 이번 글에서는 Tornado의 로깅 모듈을 사용하는 기본적인 설정 방법과 로그 메시지의 출력 위치, 로그 레벨 설정에 대해 알아보았습니다. 로깅은 개발하는 과정에서 필요한 도구로, Tornado의 로깅 기능을 제대로 활용하면 애플리케이션의 안정성과 성능을 향상시킬 수 있습니다.