[파이썬] 조건문을 활용한 로깅

로그는 프로그램 개발 및 디버깅에 있어서 매우 중요한 역할을 합니다. 로그를 통해 프로그램의 동작상태, 오류 메시지 등을 기록하여 추후에 분석하고 해결할 수 있습니다. 파이썬에서는 logging 모듈을 사용하여 로그를 기록할 수 있습니다. 이번 글에서는 조건문을 활용하여 로깅을 좀 더 효과적으로 제어하는 방법에 대해 알아보겠습니다.

기본적인 로깅 설정

먼저, 로깅을 위해 logging 모듈을 import 해야 합니다.

import logging

로깅 모듈의 기본 레벨은 WARNING입니다. 이는 WARNING 레벨 이상의 메시지만 출력되는 것을 의미합니다. 따라서 전체 로그를 출력하려면 다음과 같이 레벨을 설정해야 합니다.

logging.basicConfig(level=logging.DEBUG)

위의 코드는 DEBUG 레벨 이상의 메시지를 모두 출력하도록 설정합니다. 이제 logging.debug() 함수를 호출하면 해당 메시지가 출력됩니다.

logging.debug("This is a debug message")

조건문을 활용한 로그 제어

로그를 기록할 때, 특정 조건을 만족하는 경우에만 로그를 출력하고 싶은 경우가 있을 수 있습니다. 이럴 때에는 if 조건문을 활용하여 로그를 제어할 수 있습니다.

if condition:
    logging.debug("This is a debug message")

위의 코드에서 condition은 조건을 나타내는 표현식입니다. 만약 conditionTrue인 경우에만 해당 로그가 출력됩니다.

또한, 로그를 조건에 따라 다르게 출력하고 싶을 때에는 if-else 문을 사용할 수 있습니다.

if condition:
    logging.debug("This is a debug message")
else:
    logging.info("This is an info message")

위의 코드에서 conditionTrue인 경우에는 DEBUG 레벨의 로그가 출력되고, conditionFalse인 경우에는 INFO 레벨의 로그가 출력됩니다.

예외 처리와 로깅

시스템에서 발생하는 예외들을 로그로 기록하면 디버깅을 할 때 매우 편리합니다. 파이썬에서는 try-except 문을 사용하여 예외를 처리할 수 있습니다. 이때, except 블록에서 로그를 출력할 수 있습니다.

try:
    # 예외가 발생할 가능성이 있는 코드
    ...
except Exception as e:
    logging.error(f"An error occurred: {str(e)}")

위의 코드에서 예외가 발생하면 except 블록이 실행되고, ERROR 레벨의 로그가 출력됩니다. str(e)를 통해 발생한 예외의 메시지를 로그로 기록합니다.

로그 파일로 저장하기

로그를 터미널에 출력하는 것이 아니라 파일에 저장하고 싶은 경우에는 로깅 핸들러를 추가해야 합니다. 로그 핸들러는 로그를 어떻게 저장할지를 정의합니다.

handler = logging.FileHandler("logfile.log")

위의 코드는 logfile.log라는 파일에 로그를 저장하는 핸들러를 생성합니다. 이제 이 핸들러를 로거에 추가해야 합니다.

logger = logging.getLogger()
logger.addHandler(handler)

이제 logging.debug() 등의 함수를 호출하면 로그가 logfile.log 파일에 저장됩니다.

마무리

조건문을 활용한 로깅은 로그를 효과적으로 제어할 수 있도록 도와줍니다. 로그를 적절하게 활용하면 프로그램의 동작을 이해하고 디버깅할 수 있습니다. logging 모듈을 사용하여 로그를 제어하는 방법을 배워보았습니다. 조건문을 활용하여 원하는 조건에 따라 로그를 출력하거나 로그 파일에 저장하는 방법을 익히면 효율적인 개발을 할 수 있습니다.