Как записать Django предупреждений и ошибок в файл журнала в производственной среде? - PullRequest
0 голосов
/ 26 мая 2020

Я хочу добиться того, чтобы предупреждения и ошибки, возникающие в производственной среде (DEBUG = False), регистрировались для указания файла журнала c (желательно прокручиваемого). Я гуглил часами, но не могу найти хорошего учебника по этому поводу. Может быть, кто-нибудь имеет в этом опыт или просто знает, может показать мне пример. Спасибо!

Редактировать :

Я пробовал это

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'handlers': {
        'file': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': 'staging.log',
        },
    },
    'loggers': {
        '': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': True,
        },
        'django': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': True,
        },
        'django.request': {
            'handlers': ['file'],
            'level': 'WARNING',
            'propagate': True,
        },
    },
}

, но он записывает все возможные вещи, а не ПРЕДУПРЕЖДЕНИЯ и выше.

1 Ответ

1 голос
/ 26 мая 2020

Вы можете следить за django регистратором здесь .

В вашем views.py:

import logging
logger = logging.getLogger(__name__)

тогда вы можете записывать, используя logger.error() или logger.warning() или logger.info(). Он создаст файл журнала в вашем основном каталоге проекта, и в нем будут перечислены все подробности ведения журнала.

См. Это:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'logfile': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': "yourproject_name.log",
            'maxBytes': 100000,
            'backupCount': 2,
            'formatter': 'verbose',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['logfile'],
            'level': 'INFO',
            'propagate': True,
        },
        'apps': {
            'handlers': ['logfile'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}
...