1. logging 이란?
로깅은 현재 우리 프로그램이 어떤 상태를 가지고 있는지, 외부 출력을 하게 만들어서 프로그램의 동작을 이해하고, 문제 발생 시 진단과 해결에 도움을 얻기 위해 추가하는 기능이다.
로깅을 사용하는 이유
- 디버깅 및 문제 해결
- 성능 모니터링 : 성능에 관한 정보를 제공, 성능 병목현상이나 최적화 필요 부분을 식별 가능
- 보안 : 보안 이벤트를 기록하여 시스템에 대한 불법적 접근, 공격 감지 가능
- 오디팅 : 특정 이벤트나 행동에 대한 기록을 제공하여 나중에 검토, 증명 가능
로깅의 레벨
로깅은 다양한 레벨이 있다.
- DEBUG : 디버깅 목적의 상세한 정보 기록
- INFO : 정보성 메시지 기록
- WARNING : 잠재적 문제를 나타내는 경고 기록
- ERROR : 심각한 문제 발생 기록 (프로그램 계속 실행 가능)
- CRITICAL : 심각한 문제 발생 (프로그램 중단)
2. Python 에서의 로그
로깅은 각 언어 및 프레임워크에서 다양한 방식으로 구현될 수 있다.
Python의 경우 내장 모듈인 logging을 사용해서 로깅을 구현할 수 있다.
import logging
# 로깅 설정
logging.basicConfig(level=logging.DEBUG)
# 로그 메시지 출력
logging.debug("This is a debug message.")
logging.info("This is an info message.")
logging.warning("This is a warning message.")
logging.error("This is an error message.")
logging.critical("This is a critical message.")
3. FastAPI 에서 logging 활용하기
유틸리티 관련 설정을 분리해놓았다면,
유틸리티 파일에 로거를 만들고
import logging
def get_logger(name) -> logging.Logger:
logger = logging.getLogger(name)
return logger
메인에서 프로그램이 시작할 때 로깅이 작동하게 설정을 추가한다.
from util(유틸리티파일) import get_logger
logger = get_logger(__name__)
uvicorn.run(
...
log_level = "info"
# 출력/저장할 로그 레벨 설정 debug/info/warning/error/critical
log_config = "log_config.yaml"
...
)
이후 로깅이 필요한 파일에서(주로 crud 파일) import 후 사용한다.
from util import get_logger
logger = get_logger(__name__) # name은 현재 파일의 위치를 나타낸다
##로깅이 필요한 위치에서
logger.info('log message')
logger.error('error message')
'TIL > Web 전반' 카테고리의 다른 글
인증과 인가 (0) | 2024.05.24 |
---|---|
Flask 와 RESTful API (0) | 2024.03.02 |
FastAPI 에서의 테스트코드 (0) | 2024.03.02 |
Docker 도커란 무엇인가? (0) | 2024.03.02 |
HTTP란 무엇인가? (0) | 2024.03.02 |