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