과제 정보 요약
구현 기간 : 21.11.15(17시) ~ 21.11.17 (10시)
자세한 내용은 Github 참고
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'formatbatch': {
'format': '[%(asctime)s] %(levelname)s [%(filename)s:%(lineno)s] %(message)s',
'datefmt': '%d/%b/%Y %H:%M:%S'
},
},
'handlers': {
'batchfile': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'when': 'W0',
'filename': LOGGING_BATCH_PATH,
'formatter': 'formatbatch',
},
},
'loggers': {
'batch': {
'handlers': ['batchfile'],
'level': 'INFO',
},
},
}
예시)
import logging
logger = logging.getLogger('batch') # batch라는 Logger 사용
logger.info('hello')
위 코드와 같이 작성 및 설정이 되어 있다고 가정하면, batch
라는 loggers
로 작동하고, batch
는 handlers
로 batchfile
이 설정되어 있으므로, TimedRotatingFileHandler
방식으로 formatbatch
의 설정된 포멧대로 출력 (파일, 콘솔 등...) 이 됩니다.
Result
[17/Nov/2021 01:24:01] INFO [utils.py:12] [start_batch] trying [1/5]
[17/Nov/2021 01:24:01] INFO [batch.py:98] [batch_task] Start get_data_from_open_api
[17/Nov/2021 01:24:01] INFO [batch.py:101] [batch_task] Start get_data_from_db
[17/Nov/2021 01:24:01] INFO [batch.py:104] [batch_task] Check items for Create, Udate, Delete]
[17/Nov/2021 01:24:01] INFO [batch.py:108] [batch_task] Create new itmes to db [totoal: 0]
[17/Nov/2021 01:24:01] INFO [batch.py:111] [batch_task] Update new itmes to db [totoal: 0]
[17/Nov/2021 01:24:01] INFO [batch.py:116] [batch_task] Delete new itmes to db [totoal: 0]
[17/Nov/2021 01:24:01] INFO [crontab.py:21] [start_batch] Success batch job [took:0.23s]
이전에도 DB 튜닝을 위해서 콘솔에 이러한 방식으로 Logging을 한 적은 있으나, 사실 의미를 잘 모른체 사용하였는데, 이번에 명확하게 알게되어 뿌듯하였습니다.
DJANGO_SECRET_KEY
와 이번에 사용한 외부 API_KEY
를 설정해놨었기 때문입니다.(설정파일 예시)
{
"DJANGO_SECRET_KEY" : "SECRET_KEY",
"OPEN_API_KEY" : "API_KEY"
}
이번에는 평소에 구현방법을 알고 있으면 좋겠다 라고 생각하던 기능(배치, 로깅)을 구현해봐서 좋았으며, 이 것을 바탕으로 어떻게 하면 더 고도화 시킬 수 있는지 고민하면 좋을 것 같습니다.