Установка пути к переменной с помощью syslog-ng python destination - PullRequest
1 голос
/ 22 марта 2019

Возможно ли это?Из того, что я вижу, единственный способ получить опции в классе python - это жестко закодировать их в опциях назначения Python.Мне нужно установить переменный путь, основанный на макросах, таких как $ HOST, но параметры назначения Python, похоже, не интерполируются.Мне нужен способ передачи значений макросов, таких как $ HOST, в метод init ().

1 Ответ

1 голос
/ 22 марта 2019

Значение $ HOST изменяется для каждого сообщения, поэтому оно вам действительно нужно в send(), а не в init(). То, что вы действительно хотите, это что-то вроде этого:

class MyDestination(object):

# ...

  def send(self, msg):
    host = msg["HOST"]
    # ...
    return True

Или вы можете использовать шаблоны, начиная с версии 3.18:

import syslogng

class MyDestination(object):
  def init(self, options):
    self.log_template = syslogng.LogTemplate("$HOST")
    # ...
    return True

  def send(self, msg):
    formatted_string = self.log_template.format(msg, self.template_options)
    # ...
    return True
...