我在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,
}
}
}
2条答案
按热度按时间4uqofj5v1#
你应该设置
disable_existing_loggers
变量True
。这个变量为真意味着记录器被禁用。阅读以下内容:https://docs.djangoproject.com/en/3.0/topics/logging/#configuring-logging
yrefmtwq2#
you can add the
--logging-clear-handlers
option.python manage.py test --logging-clear-handlers