I am trying to set up a custom log filter in django, but I am stuck with an error:
ValueError: Unable to configure filter 'user_filter': 'module' object has no attribute 'Filter'
I get this error when I try to run the django development server.
The purpose of this is to log name of the user, which is a request variable defined in my middleware.
Here is what I have in my 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
},
}
}
and in creative/logging.py:
import logging
class UserFilter(logging.Filter):
def filter(self, record):
record.user = record.request.user_profie['fullName']
return True
Any ideas?
logging.py.logging.pycis not there.AttributeError: 'LogRecord' object has no attribute 'request'. Any guess what I am doing wrong? Thanks