Python logging - 1

hyuckhoon.ko·2022년 9월 14일
0

Logging to Files, Setting Levels, and Formatting


로깅이 없는 상황

print문을 도배해야 한다.

def add(x: int, y: int) -> int:
    return x + y


def subtract(x: int, y: int) -> int:
    return x - y


def multiply(x: int, y: int) -> int:
    return x * y


def divide(x: int, y: int) -> int:
    return x / y


num1 = 10
num2 = 2

add_result = add(num1, num2)
print(f"덧셈 결과는 : {add_result}")


sub_result = subtract(num1, num2)
print(f"뺄셈 결과는 : {sub_result}")


mul_result = multiply(num1, num2)
print(f"곱셈 결과는 : {mul_result}")


div_result = divide(num1, num2)
print(f"나눗셈 결과는 : {div_result}")
덧셈 결과는 : 12
뺄셈 결과는 : 8
곱셈 결과는 : 20
나눗셈 결과는 : 5.0

(참고) 로그 레벨 의미

레벨의미
DEBUG상세한 정보. 보통 문제를 진단할 때만 필요합니다.
INFO예상대로 작동하는지에 대한 확인.
ERROR예상치 못한 일이 발생했거나 가까운 미래에 발생할 문제(예를 들어 ‘디스크 공간 부족’)에 대한 표시. 소프트웨어는 여전히 예상대로 작동합니다.
WARNING더욱 심각한 문제로 인해, 소프트웨어가 일부 기능을 수행하지 못했습니다.
CRITICAL심각한 에러. 프로그램 자체가 계속 실행되지 않을 수 있음을 나타냅니다.

logging 모듈 적용

add_result = add(num1, num2)
logging.warning(f"덧셈 결과는 : {add_result}")


sub_result = subtract(num1, num2)
logging.warning(f"뺄셈 결과는 : {sub_result}")


mul_result = multiply(num1, num2)
logging.warning(f"곱셈 결과는 : {mul_result}")


div_result = divide(num1, num2)
logging.warning(f"나눗셈 결과는 : {div_result}")
WARNING:root:덧셈 결과는 : 12
WARNING:root:뺄셈 결과는 : 8
WARNING:root:곱셈 결과는 : 20
WARNING:root:나눗셈 결과는 : 5.0

하지만 위 메시지는 WARNING 레벨은 아니다.
DEBUG나 IFNO 가 적합하다.

logging.warninglogging.debug로 바꿔보자.

import logging


def add(x: int, y: int) -> int:
    return x + y


def subtract(x: int, y: int) -> int:
    return x - y


def multiply(x: int, y: int) -> int:
    return x * y


def divide(x: int, y: int) -> int:
    return x / y


num1 = 10
num2 = 2

add_result = add(num1, num2)
logging.debug(f"덧셈 결과는 : {add_result}")


sub_result = subtract(num1, num2)
logging.debug(f"뺄셈 결과는 : {sub_result}")


mul_result = multiply(num1, num2)
logging.debug(f"곱셈 결과는 : {mul_result}")


div_result = divide(num1, num2)
logging.debug(f"나눗셈 결과는 : {div_result}")
하지만 결과는 출력되지 않는다.

출력되게 하려면 어떻게 해야할까?

logging.basicConfig(level=logging.DEBUG)

를 추가한 후 실행하면 된다.

DEBUG:root:덧셈 결과는 : 12
DEBUG:root:뺄셈 결과는 : 8
DEBUG:root:곱셈 결과는 : 20
DEBUG:root:나눗셈 결과는 : 5.0

0개의 댓글