-- setting.py 파일에 아래 추가
-------------------------------------------
...

LOGGING = {
    'version': 1,
    'formatters': {
        'verbose': {
            'format': '[%(levelname)s] [%(asctime)s] %(module)s %(process)d %(thread)d %(message)s \n'
        },
        'simple': {
            'format': '[%(levelname)s] [%(asctime)s] %(message)s \n'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/debug.log'),
            'maxBytes': 1024 * 1024 * 1, # 1MB
            'backupCount': 5,
            'formatter': 'simple'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

# 아래 스크립트가 없어도 logging된다.
# 아래 스크립트는 LOGGING['loggers']에 지정된 logging name을 순회하면서 설정을 바꾸는 기능을 보여준다.
if DEBUG:
    # make all loggers use the console.
    for logger in LOGGING['loggers']:
        LOGGING['loggers'][logger]['handlers'] = ['console', 'file']

 

# python manage.py runserver 0.0.0.0:8000 --noreload &   # --reload 옵션(소스변경시 자동재시작 기능)은 log파일 백업시 runserver에서 발생하는 에러 방지용

 

import logging
logger = logging.getLogger('django')


url(r'^$', views.index, name='index'),


from django.http import HttpResponse
def index(request):
    logger.debug('debug logged')
    logger.info('info logged')
    logger.warning('warning logged')
    logger.error('error logged')
    logger.critical('critical logged')
    logger.debug(request.path)
    
    return HttpResponse("Hello, world. You're at the polls index.")