up 0 down

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

Например, у меня есть поле, которое хранит «память, используемая» и хотели бы, чтобы хранить в своем собственном поле/свойства в сообщения системного журнала.

Я экспериментировал с конфиге Rsyslog и смогли вывести как официальные свойства и пользовательского свойства с помощью шаблона следующим образом:

template(name="test-template" type="list") {
  constant(value="the test variable is: ")
  property(name="$!testvar")
  constant(value="\n")

  constant(value="the message is: ")
  property(name="msg")
  constant(value="\n")    
}

Я тогда выводить все журналы с помощью шаблона, как так:

*.* /var/log/test;test-template

Теперь, если я установил, что тестовое свойство в rsyslog.conf как так:

set $!testvar = 'Testing variable';

Он работает, но в моей программе гр как я заполнить это поле «testvar»? Syslog.h довольно прост и, кажется, только чтобы обеспечить заполнение поля «сообщение». Моя программа выглядит так:

#include <syslog.h>

int main(int argc, char** argv) {
    setlogmask (LOG_UPTO (LOG_NOTICE));
    openlog("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
    syslog(LOG_NOTICE, "testvar=%s msg=%s", "testvarfromc", "message from c");
    closelog();

    std::cout << "hello world\n";


    return 0;
}

Но когда я запускаю его и проверьте/вар/Журнал/тест, только поле «сбщ» заполняется «testvar = testvarfromc тзд = сообщение от C», и «поле/свойство testvar пусто».

Я помню, в прошлом прикрепления некоторых маршрутизаторов на сервер системного журнала, и они были пользовательские поля/параметры, такие как «пакеты, отправленных» и т.д. Так что я интересно, если возможно, и другие программы/техник просто свалка своих собственных полей в поле сообщения, как отформатированная строка? Или, если его даже можно использовать пользовательские поля/свойства? И если да, то как я могу это сделать?

Я в основном ссылаясь на официальную документацию Rsyslog: https://www.rsyslog.com/doc/master/configuration/properties.htmlГде это говорит «Свойство сообщений Эти добытое Rsyslog анализаторов из исходного сообщения. Все свойства сообщения должны начинаться с буквой.».