我正在尝试在django中设置自定义日志过滤器,但我遇到了错误:
ValueError: Unable to configure filter 'user_filter': 'module' object has no attribute 'Filter'
Run Code Online (Sandbox Code Playgroud)
当我尝试运行django开发服务器时,我收到此错误.
这样做的目的是记录用户的名称,这是我的中间件中定义的请求变量.
这是我在我的settigs.py
:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s %(user)s [%(levelname)s] %(name)s: %(message)s'
},
},
'filters': {
'user_filter': {
'()': 'creative.logging.UserFilter',
}
},
'handlers': {
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': BASE_DIR+'/logs/default.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
'request_handler': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': BASE_DIR+'/logs/django_request.log',
'maxBytes': 1024*1024*5, # 5 MB
'backupCount': 5,
'formatter':'standard',
},
},
'loggers': {
'django': {
'handlers': ['default'],
'level': 'DEBUG',
'format':'%(asctime)s | %(levelname)s | %(funcName)s |%(message)s',
'propagate': False,
'filters': ['user_filter']
},
'django.request': {
'handlers': ['request_handler'],
'level': 'DEBUG',
'propagate': False
},
}
}
Run Code Online (Sandbox Code Playgroud)
并在creative/logging.py
:
import logging
class UserFilter(logging.Filter):
def filter(self, record):
record.user = record.request.user_profie['fullName']
return True
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?