Я добавил пользовательское ведение журнала в свой проект django, но оно не работает

Я добавил этот код в свой settings.py, но он не работает. Ведение журнала по умолчанию в Django работает отлично, в моих настройках используется параметр debug, и я создал папку logs вручную.

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'file_logging': {
            'format': '{levelname} / {levelno} - {asctime} --- {pathname} in {lineno} --- {process:d} {thread:d} -- {message}',
            'style': '{'
        },
        'email_logging': {
            'format': '{levelname} at {asctime} --- {pathname} in {lineno} -- {message}',
            'style': '{'
        },
    },
    'filters': {
        'debug_true_required': {
            '()': 'django.utils.log.RequireDebugTrue'
        }
    },
    'handlers': {
        'full_handler': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': 'logs/full.log',
            'formatter': 'file_logging',
        },
        'critical_handler': {
            'level': 'CRITICAL',
            'class': 'logging.FileHandler',
            'filename': 'logs/critical.log',
            'formatter': 'file_logging',
        },
        'error_handler': {
            'level': 'ERROR',
            'filters': ['debug_true_required',],
            'class': 'logging.FileHandler',
            'filename': 'logs/error.log',
            'formatter': 'file_logging',
        },
        'critical_email_handler': {
            'level': 'CRITICAL',
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'email_logging',
        },
        'error_email_handler': {
            'level': 'ERROR',
            'filters': ['debug_true_required',],
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'email_logging',
        },
    },
    'loggers': {
        'file_logger': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True
        },
        'email_logger': {
            'handlers': ['critical_email_handler', 'error_email_handler'],
            'level': 'ERROR',
            'propagate': True
        },
    }
}

Я попытался снова создать папку журналов, но это не сработало, затем я попытался изменить 'propagate': False на True, но это снова не сработало, а также я попробовал вести журнал вручную с помощью этого кода, который работает отлично, и журналы корректно сохраняются в моей папке. файлы протоколирования.

logger = logging.getLogger('file_logger')
logger.info("This is a test log message.")

logger = logging.getLogger('email_logger')
logger.critical("This is a test critical message.")

проблема с вашей конфигурацией ведения журнала django, вероятно, связана с тем, что регистраторы django по умолчанию неправильно настроены для использования вашей пользовательской настройки ведения журнала.

По умолчанию django использует свои собственные регистраторы (например,, django, django.request, и т.д.), и если вы явно не настроите эти регистраторы на использование ваших пользовательских обработчиков, они не будут записывать данные в указанные вами файлы журнала.

перепишите их следующим образом:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'file_logging': {
            'format': '{levelname} / {levelno} - {asctime} --- {pathname} in {lineno} --- {process:d} {thread:d} -- {message}',
            'style': '{',
        },
        'email_logging': {
            'format': '{levelname} at {asctime} --- {pathname} in {lineno} -- {message}',
            'style': '{',
        },
    },
    'filters': {
        'debug_true_required': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'full_handler': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': 'logs/full.log',
            'formatter': 'file_logging',
        },
        'critical_handler': {
            'level': 'CRITICAL',
            'class': 'logging.FileHandler',
            'filename': 'logs/critical.log',
            'formatter': 'file_logging',
        },
        'error_handler': {
            'level': 'ERROR',
            'filters': ['debug_true_required'],
            'class': 'logging.FileHandler',
            'filename': 'logs/error.log',
            'formatter': 'file_logging',
        },
        'critical_email_handler': {
            'level': 'CRITICAL',
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'email_logging',
        },
        'error_email_handler': {
            'level': 'ERROR',
            'filters': ['debug_true_required'],
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'email_logging',
        },
    },
    'loggers': {
            #your custom loggers
        'file_logger': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True,
        },
        'email_logger': {
            'handlers': ['critical_email_handler', 'error_email_handler'],
            'level': 'ERROR',
            'propagate': True,
        },
      # django default loggers
        'django': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True,
        },
        'django.request': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'ERROR',
            'propagate': True,
        },
        'django.server': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True,
        },
        'django.template': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True,
        },
        'django.db.backends': {
            'handlers': ['full_handler', 'critical_handler', 'error_handler'],
            'level': 'INFO',
            'propagate': True,
        },
    },
Вернуться на верх