У меня есть веб-сервис, который записывает свои выходные данные в stdout и управляет systemd. Конфигурация systemd отправляет стандартный вывод в системный журнал. У меня проблема в том, что многострочные сообщения разбиты на несколько записей системного журнала. Это проблема особенно с трассировкой стека исключений. Есть ли способ настроить rsyslog, чтобы объединить их в одну запись? Я нашел некоторые решения, использующие свойство readMode
imfile
, которое делает именно то, что мне нужно, но в моем случае я получаю данные напрямую из значения по умолчанию imuxsock
.
Тест, который я использую, выполняется
echo -e "<<hello\n\tsecond\n\tthird\nnew message>>" | logger -t my-tag
Это генерирует
May 16 17:06:46 host my-tag: <<hello
May 16 17:06:46 host my-tag: second
May 16 17:06:46 host my-tag: third
May 16 17:06:46 host my-tag: new message>>
Но я хочу получить это
May 16 17:06:46 host my-tag: <<hello
second
third
May 16 17:06:46 host my-tag: new message>>
Возможно ли это?
Поведение может быть описано как режим 2 в readMode imfile
2 - с отступом (новые сообщения журнала начинаются с начала строки. Если строка начинается с пробела или табуляции «t», это часть сообщения журнала перед ней)
С оговоркой, что, поскольку это не статические данные, такие как потребляет imfile, потребуется таймер, 1 с или что-то в этом духе, и если новые данные не были получены, мы предполагаем, что запись в журнале завершена