Django unittest -如何只禁用控制台日志

idv4meu8  于 2022-12-01  发布在  Go
关注(0)|答案(2)|浏览(126)

我在django(v2.2)中有一个测试,它故意生成一个错误,以检查错误是否记录在正确的日志文件中。
但我也得到了打印在控制台这是一种恼人的,我正在寻找一种方法来隐藏的信息。
如果我用logging.disable(logging.CRITICAL)禁用日志记录,它将不会在文件中记录错误。
我还尝试在从记录器中删除控制台处理程序后使用with self.settings(LOGGING=logging)(请参阅下面的设置),但似乎没有考虑到这一点。
此外,将disable_existing_logger设置为True也没有帮助。
你知道怎么做吗?
我的设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'msg_filter': {
            '()': MessageFilter,
            'strings_to_be_ignored': [
                'Not Found: /favicon.ico'
            ],
        }
    },
    'formatters': {
        'verbose': {
            'format': '_____________________________________________________________'
            '\n%(asctime)s - [%(levelname)s|%(name)s] %(message)s\n'
        },
        'simple': {
            'format': '%(asctime)s - [%(levelname)s|%(name)s] %(message).50s'
        },
    },
    'handlers': {
        'warning': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': '/some_folder/warning.log',
            'formatter': 'verbose',
            'filters': ['msg_filter']
        },
        'warning_simple': {
            'level': 'WARNING',
            'class': 'logging.FileHandler',
            'filename': '/some_folder/warning.log',
            'formatter': 'simple',
            'filters': ['msg_filter']
        },
        'info': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/some_folder/info.log',
            'maxBytes': 1024 * 1024 * 2,
            'backupCount': 9,
            'formatter': 'simple',
            'filters': ['msg_filter']
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
            'filters': ['msg_filter']
        },
        'console_simple': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
            'filters': ['msg_filter']
        }
    },
    'loggers': {
        '': {
            'handlers': ['console', 'info', 'warning'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'django': {
            'handlers': ['console_simple', 'info', 'warning_simple'],
            'level': 'DEBUG',
            'propagate': False,
        }
    }
}
4uqofj5v

4uqofj5v1#

你应该设置disable_existing_loggers变量True。这个变量为真意味着记录器被禁用。阅读以下内容:
https://docs.djangoproject.com/en/3.0/topics/logging/#configuring-logging

yrefmtwq

yrefmtwq2#

you can add the --logging-clear-handlers option.
python manage.py test --logging-clear-handlers

相关问题