Djnago Logging



LOGGING = {

    'version': 1,

    'disable_existing_loggers': False,

    'formatters': {

        'standard': {

            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",

            'datefmt' : "%Y-%m-%d %H:%M:%S"

        },

    },

    'handlers': {

        'null': {

            'level': 'DEBUG',

            'class': 'logging.NullHandler',

        },

        'console': {

            'level': 'INFO',

            'class': 'logging.StreamHandler',

            'formatter': 'standard',

        },

        'file': {

            'level': 'INFO',

            'class': 'logging.handlers.RotatingFileHandler',

            'filename': 'access.log',

            'formatter': 'standard',

            'maxBytes': 1024*1024*100,

            'backupCount': 10,

        },

    },

    'loggers': {

        'django': {

            'handlers': ['console'],

            'level': 'DEBUG',

            'propagate': False,

        },

        'api': {

            'handlers': ['file'],

            'level': 'DEBUG',

            'propagate': False,

        },

    },

    'root': {

        'level': 'DEBUG',

        'handlers': ['console'],

    }

}

 propagate 

logging.getLogger() 인자값 없이 생성하면 root logger 가 생성됨

logging.getLogger("이름") 인자값을 넘겨주고 생성하면 "이름" 으로 logger 가 생성됨

두 logger는 부모와 자식 관계를 갖음 

이때 자식 logger 에서 부모 logger 에도 로그 메시지를 넘겨 줄수 잇는데 그 기능이 propagate 임.

사용하지 않으려면 False 로 성정하면 됨


만약 위 설정에서 api 로거의 propagate 를 True 로 하고 로그를 남기면

file, console 두곳에 같은 로그메시지가 전달됨


/path/to/projectname/projectname/settings.py 에 정의함






















+ Recent posts