如何将 Django 警告和错误记录到生产日志文件中?

How to log Django warnings and errors to log file in Production?

我想要实现的是将生产中发生的警告和错误(即 DEBUG=False)记录到循环日志文件中。

我试过了

    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,
            },
        },
    }

但是,上面记录了所有内容,而不仅仅是日志级别 WARNING 及更高级别的消息。

您可以关注 django logger here

在你的 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,
        },
    },
}