Я хочу записать в системный журнал некоторую информацию об устранении неполадок из устройства DataPower.
Хотя он уже регистрируется, у меня есть стороннее решение, которое требует некоторой модификации сообщений, чтобы оно могло понимать и классифицировать содержимое файла журнала.
Есть ли способ, которым демон syslog может изменить содержимое того, что DataPower (или любой другой клиент syslog) отправляет ему, прежде чем помещать его в файл журнала?
rsyslog имеет систему шаблонов, позволяющую настраивать создаваемый формат журнала (http://www.rsyslog.com/doc/v8-stable/configuration/templates.html) вам нужно будет использовать заменитель свойств для управления вашим текстом (http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html) и используйте фильтр (http://www.rsyslog.com/doc/v8-stable/configuration/filters.html), чтобы выбрать свои сообщения.
Я сделал пример на старой виртуальной машине CentOS, которая у меня была под рукой. Он просто меняет местами две части сообщений ядра, разделенных запятыми, например это:
Jan 4 2016 17:21:00 VMHOST imklog 5.8.10, log source = /prog/kmsg started.
и записывает измененное сообщение в / var / log / testmsg.
$template swapAround,"%TIMESTAMP::date-rfc3339% %HOSTNAME% %syslogtag% %msg:R:log.source.[^.] - конец%,% msg: r: [^,]--end%\n"
:programname, contains, "kernel" /var/log/testmsg;swapAround
Обратите внимание, что это немного неуклюже, так как это было для старой версии rsyslog, где заменителю свойств не хватало новейших функций. (И я использовал устаревший формат для определений, который менее читабелен.)