반응형

Django자체에 앱별로 로그를 쌓게 하는 기능은 따로 없는 듯 하다.


그나마 아래 방법을 찾았는데, 앱별로 분개가 가능할듯 하다.


테스트는 아직 미진행 -> 진행완료


테스트해봤는데 아주 잘된다. 굿.


import os
import datetime

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
]

MY_APPS = [
    'accounts'
]

INSTALLED_APPS += MY_APPS

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
    },
    'loggers': {
    }
}

MY_LOGGERS = {}
MY_HANDLERS = {}
for app in MY_APPS:
    directory = os.path.dirname(os.path.dirname(__file__)) + "/var/log/" + app + "/"
    if not os.path.exists(directory):
        os.makedirs(directory)

    MY_HANDLERS[app] = {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': directory + '/' + str(datetime.date.today()) + '.log',
        'maxBytes': 1024*1024*5,
        'backupCount': 5,
        'formatter': 'verbose'
    }

    MY_LOGGERS[app] = {
        'handlers': [app],
        'level': 'DEBUG',
        'propagate': True,
    }
LOGGING['handlers'].update(MY_HANDLERS)
LOGGING['loggers'].update(MY_LOGGERS)



참고 : 

https://stackoverflow.com/questions/34911068/django-how-can-we-generate-app-wise-log-with-app-name-directory-and-todaydate-lo

반응형

'개발 > django' 카테고리의 다른 글

Rest Framework  (0) 2019.01.31
Postman POST 오류  (0) 2019.01.23
로그 백업 방식 (logging - handlers)  (0) 2019.01.22
Fake  (0) 2019.01.17
MacOS에 설치하기  (0) 2019.01.09

+ Recent posts