Как установить дополнительное поле уровня с помощью Python Logstash Logger,? - PullRequest
0 голосов
/ 07 ноября 2018

В настоящее время я использую библиотеку python-logstash-async, которая, по сути, является просто оболочкой для python-logstash.

https://python -logstash-async.readthedocs.io

Я попытался прочитать их документы, чтобы выяснить, как установить дополнительные поля верхнего уровня для сообщений, которые я отправляю.

В настоящее время я могу добавить только дополнительные поля к объекту extra, предоставленному регистратором.

Но словарь extra означает, что все мои дополнительные поля находятся не на верхнем уровне.

Вместо отправки:

{
 "message":"blah"
 "extra": {
  "blax":"baz"
 }
}

Я хочу отправить:

{
 "message":"blah"
  "blax":"baz"
}

Их документы быстро упоминают об этом как о возможности: https://python -logstash-async.readthedocs.io / en / stable / config.html? Highlight = tags

Но я не могу понять, как на самом деле добавить конфигурацию клиента.

Мне нужны некоторые примеры кода для использования пользовательской конфигурации или какой-либо другой способ установки поля верхнего уровня в сообщении.

1 Ответ

0 голосов
/ 07 ноября 2018

Я только что нашел быстрый взлом, добавив поле extra в постоянную переменную:

from logstash_async.constants import constants
constants.FORMATTER_LOGSTASH_MESSAGE_FIELD_LIST.append('my_new_top_field')
logger.info('blah',extra={'my_new_top_field':'bar'})

Кажется, чтобы привести к сообщению

{
  'message':'blah',
  'my_new_top_field':'bar'
  ... etc
}

Отправляется.

Что решило мою проблему. Однако я оставлю это открытым, если кто-нибудь придумает «правильное» решение, использующее объект конфигурации.

...