【问题标题】:Django logging is emptyDjango 日志记录为空
【发布时间】:2020-02-25 08:34:51
【问题描述】:

我遇到了一个问题,在我将格式化程序添加到 LOGGING 配置后到底发生了什么?日志文件为空。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{asctime} [{module}]:: {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'file.DEBUG': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logs/debug.log',
            'maxBytes' : 1024*1024*10,
            'backupCount': 10,
            'formatter':'verbose'
        },
        'file.INFO': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logs/info.log',
            'maxBytes' : 1024*1024*10,
            'formatter':'verbose'
        },
        'file.ERROR': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'logs/error.log',
            'maxBytes' : 1024*1024*10,
            'backupCount': 10,
            'formatter':'verbose'
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['file.DEBUG'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django': {
            'handlers': ['file.INFO'],
            'level': 'INFO',
            'propagate': True,
        },
        'django': {
            'handlers': ['file.ERROR'],
            'level': 'ERROR',
            'propagate': True,
        },
    },
}

现在所有输出的调试文件都是空的,除了我用这段代码在视图上测试的错误文件

import logging
logger = logging.getLogger('django')

logger.info('tests')
logger.error('tests')
logger.debug('tests')
logger.debug('tests')
logger.error('tests')
logger.info('tests')

文件中只记录了错误,为什么会这样? 我正在使用 django 的新版本,即 2.2

更新 不知道我刚刚做了什么,但它现在可以工作了 这是我的新 LOGGING 设置

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
            'verbose': {
                'format': '{levelname} {asctime} [{module}]:: {message}',
                'style': '{',
            },
            'simple': {
                'format': '{levelname} {message}',
                'style': '{',
            },
        },
    'handlers': {
        'file_debug': {
            'level': 'DEBUG', 
            'class': 'logging.FileHandler',
            'filename': 'logs/debug.log',
            'formatter':'verbose'
        },
        'file_error': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': 'logs/error.log',
            'formatter':'verbose'
        },
        'file_info': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': 'logs/info.log',
            'formatter':'verbose'
        },
    },
    'loggers': {
        'django.server': {
            'handlers': ['file_debug'], 
            'level': 'DEBUG',
            'propagate': True, 
        },
        'django': {
            'handlers': ['file_error'], 
            'level': 'ERROR',
            'propagate': True, 
        },
        'django': {
            'handlers': ['file_info'], 
            'level': 'INFO',
            'propagate': True, 
        },
    },
}

【问题讨论】:

    标签: python django python-3.x logging


    【解决方案1】:

    因为你没有配置LOGGING。在您的设置中,django 有两个条目,django 正在根据最后一个条目写入日志。取而代之的是,您应该像这样放置配置:

    'loggers': {
            'django.request': {
                'handlers': ['file.DEBUG'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'django': {
                'handlers': ['file.INFO', 'file.ERROR'],  # <-- Here
                'level': 'INFO',
                'propagate': True,
            }
    }
    

    请参阅文档examples section 的最后一个示例。

    【讨论】:

    • 在我添加格式化程序之前它正在工作,我也希望每个日志级别都有自己的文件。但是感谢信息,关于django.request :)
    • 那么django.request 将存储日志文件.DEBUG 文件夹。顺便说一句,如果你觉得这个答案有帮助,please consider marking it as accepted。
    猜你喜欢
    • 2011-09-16
    • 1970-01-01
    • 2011-04-06
    • 2018-06-05
    • 2013-09-11
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多