我想在我的Django应用程序中使用python-logstash
并需要传递'额外'字段。 Here are the docs。
extra = {"app":"app-live","source":"django_log"}
我不想通过并更改所有记录器调用,例如:
logger.info('Information blah.')
至logger.info('Information blah.', extra=extra)
extra
对于每次通话都是相同的,并且是必需的。我宁愿覆盖现有的记录器方法,以便我可以这样做一次。
有没有办法在Django settings.py
中的日志记录处理程序中执行此操作,或者如何覆盖记录器方法以始终添加extra
args?
答案 0 :(得分:0)
您应该可以使用Filter中描述的logging cookbook进行全局操作。
为了简化一些事情,Django提供了CallbackFilter。 您的过滤器功能如下所示:
def logstash_filter(record):
record.app = 'app-live'
record.source = 'django_log'
return True
您的日志配置就像这样。
...
'filters': {
'add_logstash_info': {
'()': 'django.utils.log.CallbackFilter',
'callback': logstash_filter,
}
},
'handlers': {
'logstash': {
...
'filters': ['add_logstash_info'],
},
...