logger

Sung Jun Jin·2020년 8월 18일
0

TIL

목록 보기
24/25

현재 우리 프로그램이 어떤 상태를 가지고 있는지 외부출력을 하게 만들어 개발자들이 직접확인하게 하는 것.

print("update_user_data")
print("running_server")

물론 이런 방식으로 콘솔에 출력이 가능하지만, 기존에 구축되어진 logging 라이브러리를 사용해 좀 더 로그로써의 다양한 기능을 사용할 수 있다.

ex) 로깅 파일 출력, 로깅 레벨에 따른 콘솔 출력 제한 등

예제

import logging

# 루트 로거를 가져온다
logger = logging.getLogger(__name__)
# 에러 로그 출력
logger.error("error")

로깅 모듈은 파이썬에 내장되어 있어 별도의 모듈 설치 없이 import가 가능하다.

로그 레벨

또한 로깅 정보는 로그의 레벨에 따라서 출력 제한이 가능하다. 로그의 레벨은 다음과 같다

DEBUG < INFO < WARNING < ERROR < CRITICAL

기본적으로 파이썬 로깅은 WARNING 레벨에서부터 출력이 실행된다.

예시로 다음과 같은 코드를 실행해보자

import logging

logger = logging.getLogger

logger.debug("logger_debug")
logger.info("logger_info")
logger.warning("logger_warning")
logger.error("logger_error")

결과

System check identified no issues (0 silenced).
August 18, 2020 - 02:17:05
Django version 3.1, using settings 'RedisQueue.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

logger_warning
logger_error

warning 부터 출력이 시작되는걸 확인할 수 있다.

logging.basicConfig() 메소드를 사용해 로그 출력 레벨을 직접 지정해줄 수 있다.

import logging

logging.basicConfig(level=logging.DEBUG)
logger.info("custom_logging_info")

결과

System check identified no issues (0 silenced).
August 18, 2020 - 03:54:12
Django version 3.1, using settings 'RedisQueue.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

INFO:my:custom_logging_info
[18/Aug/2020 03:54:16] "GET /test/ HTTP/1.1" 200 14

info 레벨의 로그가 출력된 모습을 확인할 수 있다.

파일 출력

파일 핸들러를 사용해 파일로 로그 출력이 가능하다.

import logging

logger = logging.getLogger(__name__)
file_handler = logging.FileHandler('my.log')
logger.addHandler(file_handler)

logger.debug("logger_debug")
logger.info("logger_info")
logger.warning("logger_warning")
logger.error("logger_error")
                                                         

위 코드를 실행 후 프로젝트 디렉토리에는 my.log라는 로그 출력 파일이 생성되었다.

파일의 내부를 살펴보면 warningerror로그가 기록되어 있는것을 확인할 수 있다.

profile
주니어 개발쟈🤦‍♂️

0개의 댓글