현재 우리 프로그램이 어떤 상태를 가지고 있는지 외부출력을 하게 만들어 개발자들이 직접확인하게 하는 것.
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
라는 로그 출력 파일이 생성되었다.
파일의 내부를 살펴보면 warning
과 error
로그가 기록되어 있는것을 확인할 수 있다.