记录错误无法更正文件

2024-04-25 12:05:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在与Django合作,错误不会记录在错误日志中,但会记录在日志中。设置如下:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s',
            'datefmt' : "%d/%b/%Y %H:%M:%S",
        },
        'simple': {
            'format': '%(levelname)s %(asctime)s %(message)s',
            'datefmt' : "%d/%b/%Y %H:%M:%S",
        },
    },
    'handlers': {
        'file': {
            'level': 'INFO',
            #'class': 'logging.FileHandler',
            'class':'logging.handlers.TimedRotatingFileHandler',
            'when': 'D',
            'filename': os.path.join(BASE_DIR, 'logs', 'log'),
            'formatter': 'simple',
        },
        'error_file': {
            'level': 'ERROR',
            #'class': 'logging.FileHandler',
            'class':'logging.handlers.TimedRotatingFileHandler',
            'when': 'D',
            'filename': os.path.join(BASE_DIR, 'logs', 'error_log'),
            'formatter': 'simple',
        },
        'console':{
            'level': 'INFO',
            'class':'logging.StreamHandler',
            'formatter': 'simple',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
            'propagate': True,
        },
        'error_file': {
            'handlers': ['console', 'error_file'],
            'level': 'ERROR',
            'propagate': True,
        }
    },
}

有人能帮我理解这是为什么吗?我正在寻找它,但没有发现错误

Django文件:

“仅将日志调用放入代码中是不够的。您还需要配置日志记录器、处理程序、筛选器和格式化程序,以确保可以使用日志输出

Python的日志库提供了几种配置日志的技术,从编程接口到配置文件

为了配置日志记录,您可以使用日志记录来定义日志记录设置的字典。这些设置描述您希望在日志记录设置中使用的日志记录程序、处理程序、筛选器和格式化程序,以及您希望这些组件具有的日志级别和其他属性

默认情况下,使用以下方案将日志记录设置与Django的默认日志记录配置合并

如果日志记录dictConfig中的disable_existing_loggers键设置为True(如果缺少该键,则为dictConfig默认值)然后,默认配置中的所有记录器都将被禁用。禁用的记录器与删除的记录器不同;记录器仍将存在,但会默默地丢弃记录到其中的任何内容,甚至不会将条目传播到父记录器。因此,使用“禁用现有记录器”时应非常小心:正确;这可能不是您想要的。在相反,您可以将disable_existing_logger设置为False并重新定义部分或全部默认记录器;或者您可以将LOGGING_CONFIG设置为None并自行处理LOGGING CONFIG

日志记录是作为general Django setup()函数的一部分配置的。因此,您可以确定日志记录程序始终可以在项目代码中使用。”

问候,, 贝尔纳多