Django | Log 설정

기본적으로 Django에 로그는 기본 로거만 설정되어있어서 쿠버네티스에 배포하고 난 뒤 로그가 안보인다.

Print로찍는게 보이기는 하긴한데 이건 사용용도에 맞지 않다.

적용 전 출력 예시

settings.py에 아래와 같은 형태로 추가한다.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,  # Django 기본 로거 유지
    'formatters': {
        'standard': {
            'format': '[{asctime}] {levelname} {name}:{lineno} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',  # 콘솔 출력
            'formatter': 'standard',
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO',  # 기본 레벨 (애플리케이션 코드)
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': 'INFO',    # Django 프레임워크 전반
            'propagate': False,
        },
        'django.request': {
            'handlers': ['console'],
            'level': 'ERROR',   # 요청 관련 에러만 (500 에러 같은 것)
            'propagate': False,
        },
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'WARNING',  # DB 쿼리 경고만
            'propagate': False,
        },
        'django.security': {
            'handlers': ['console'],
            'level': 'WARNING',  # 보안 관련 경고
            'propagate': False,
        },
        # mattermost send message log 너무 많이 나와서 조정
        'apscheduler': {
        'handlers': ['console'],
        'level': 'WARNING',   # INFO 로그 안 보이게 함
        'propagate': False,
        },
    },
}

적용 후 출력 예시