Python 使用过滤器自定义django记录器调用级别

Python 使用过滤器自定义django记录器调用级别,python,django,logging,Python,Django,Logging,我是Django的新手,我被指派做一项关于伐木工人的工作。 我想到了一个简单的记录器,其中信息消息使用简单的格式,警告消息(及以上)使用更复杂的格式。这是我的尝试: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'simple': { 'format': '{levelname} {message}',

我是Django的新手,我被指派做一项关于伐木工人的工作。 我想到了一个简单的记录器,其中信息消息使用简单的格式,警告消息(及以上)使用更复杂的格式。这是我的尝试:

    LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
        'verbose': {
            'format': '{levelname}: {message} Time: [{asctime}] Module: [{module}] Process: [{process:d}] Thread: [{thread:d}] ',
            'style': '{',
        }
    },
    'handlers': {
        'console_simple': {
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
            'level': 'INFO'
        },
        'console_verbose': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
            'level': 'WARNING'
        }
    },
    'loggers':{
        '': {
            'handlers': ['console_simple'],
            'level': 'INFO'
        }
    }
}
正如您可以想象的那样,问题在于警告消息或更高级别的消息将被记录两次。我考虑过使用过滤器,但在文档中找不到任何不可靠的解释

我在上找到了下面的筛选器:

问题是我不知道如何正确使用它。我以前从未使用过过滤器

示例如下:


    'filters': {
        'special': {
            '()': 'project.logging.SpecialFilter',
            'foo': 'bar',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
他们说:

定义两个过滤器: project.logging.SpecialFilter,使用别名special。如果此筛选器需要其他参数,则可以在筛选器配置字典中作为附加键提供这些参数。在这种情况下,当实例化SpecialFilter时,参数foo将被赋予bar的值

所以,我认为我需要给日志记录一个值。问题是我不知道怎么做

我至少在正确的道路上吗?我如何使用这个过滤器?还有其他解决办法吗


    'filters': {
        'special': {
            '()': 'project.logging.SpecialFilter',
            'foo': 'bar',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },