2014-12-27 106 views
2

我想设置默认值为额外参数user_id。我已经写了过滤器:python logging - 默认值为额外参数

class SystemLogFilter(logging.Filter): 
    def filter(self, record): 
     if not record.user_id: 
      record.user_id = '--' 

     return True 

但我得到这个错误:AttributeError: 'LogRecord' object has no attribute 'user_id'

我怎样才能获得user_id参数?

这是我的日志记录配置:解决

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'system_log': { 
      'format': '%(asctime)-15s - %(levelname)s - %(message)s - %(user_id)s' 
     }, 
    }, 
    'filters': { 
     'system2': { 
      '()': 'system.logging2.SystemLogFilter', 
     } 
    }, 
    'handlers': { 
     'file': { 
      'level': 'INFO', 
      'class': 'logging.FileHandler', 
      'filename': (os.path.join(BASE_DIR, 'logs/system.log')), 
      'formatter': 'system_log', 
      'filters': ['system2'], 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'propagate': True, 
      'level': 'INFO', 
     }, 
    } 
} 
+0

我写了一个小图书馆:https://github.com/svisser/logaugment –

回答

5

的一种方式将是:

class SystemLogFilter(logging.Filter): 
    def filter(self, record): 
     if not hasattr(record, 'user_id'): 
      record.user_id = '--' 
     return True 

可以使用hasattr(内置功能)查看日志记录是否有所需的属性。如果不是,那么你可以设置一个默认值。