본문 바로가기
Django

로깅 구성 및 파일에 로그 쌓기 - django

by zgabriel 2024. 7. 4.
728x90

장고 시스템에서 로그를 세팅하고 쌓는 방법이다.

1. settings.py 에 LOGGING 을 아래와 같이 설정한다.

from datetime import datetime

cdate = datetime.now().strftime("%Y%m%d")

LOGGING = {

'version': 1,

'disable_existing_loggers': False,

'formatters': {

'format_basic': {

'()': 'django.utils.log.ServerFormatter',

'format': '[{asctime}][{levelname}][{name}] - {message}',

'datefmt' : '%y.%m.%d %H:%M:%S',

'style': '{',

},

},

'handlers': {

'file1': {

'level': 'DEBUG',

'class': 'logging.FileHandler',

'filename': BASE_DIR / f'logs/django_{cdate}.log',

'formatter': 'format_basic',

},

'file2': {

'level': 'DEBUG',

'class': 'logging.FileHandler',

'filename': BASE_DIR / f'logs/user_log_{cdate}.log',

'formatter': 'format_basic',

},

},

'loggers': {

'django': {

'handlers': ['file1'],

'level': 'DEBUG',

},

'user_log': {

'handlers': ['file2'],

'level': 'DEBUG',

},

}

}

loggers 의 django 는 django 프레임워크에서 발생하는 로그를 쌓아주며 user_log는 사용자가 따로 로그를 쌓기위해 만들었다. 파일명은 뒤에 날짜정보가 쌓여 일별로 로그가 쌓이도록 하였다.

formatters 정보

. server_time : 서버시간 (18/Jun/2024 09:47:37,676)

. asctime : 현재시간 (18/Jun/2024 09:47:37,676)

. levelname : 로그레벨 (debug, info, warning, error, critical)

. name : loggers name

. message : 출력 내용

. datefmt 를 사용하여 시간을 사용자가 원하는 포맷으로 변경했다.

2. 폴더를 생성한다.

루트폴더 아래 logs 폴더를 생성하며 리눅스 기준으로 폴더권한을 설정해줘야 로그파일을 생성한다

3. 소스에서 로그 쌓기

import logging

logger = logging.getLogger('user_log')

logger.info('info log test')

logger.debug("debug log test")

/logs 폴더에 user_log_YYYYmmdd.log 형식으로 로그가 쌓인다.

 

 

반응형