에러가 났을 경우 로그를 출력하는 방법을 소개하고자 한다. dictConfig라는 것을 사용하면 된다.
import logging
from logging.config import dictConfig
logging_config = {
'version': 1,
'formatters': {
'simple': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'simple',
'stream': 'ext://sys.stdout'
},
'file': {
'class': 'logging.FileHandler',
'level': 'DEBUG',
'formatter': 'simple',
'filename': 'app.log',
'mode': 'w'
}
},
'root': {
'level': 'DEBUG',
'handlers': ['console', 'file']
}
}
dictConfig(logging_config)
logger = logging.getLogger(__name__)
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.error('This is an error message')
다음과 같은 코드를 작성하면
다음과같은 출력값이 콘솔에 출력됩니다.
또한 app.log라는 파일에 다음의 내용이 저장됩니다.
'root'에 담겨있는 level이 debug, info, error중 어떤 레벨로 출력할 것인지를 나타내고, handlers는 콘솔에 출력할 것인지, 파일에 출력할 것인지를 나타낸다. 둘 다 출력하기를 원한다면 모두 작성해주면 된다. 또한, 파일에 작성하고 싶으면 당연하지만 파일 이름도 작성해주어야 한다.
'개발' 카테고리의 다른 글
[Flask] traceback (0) | 2023.08.21 |
---|---|
[Flask] api 에러 핸들러 (0) | 2023.08.21 |
[sql, sqlalchemy] 연결된 두 테이블 cascade 설정하기 - 2 (uselist 설정) (2) | 2023.08.10 |
[sql, sqlalchemy] 연결된 두 테이블 cascade 설정하기 (0) | 2023.08.07 |
[sql, sqlalchemy] 특정 조건으로 order_by 정렬하기 - case문 (0) | 2023.08.03 |