Я часто использую регистратор (1) для вывода случайных журналов. Подобно:
ExecStart=/bin/bash -c "curl -vs http://... >/var/run/mycurl/status 2>&1"
ExecStopPost=-/bin/bash -c "[[ $SERVICE_RESULT == success ]] || logger -t '' -f /tmp/status"
И я использую journalctl (1) чтобы просмотреть их. Это действительно полезно, но иногда показывает (немного) некрасивые строчки, например. смешанные строки журнала из curl и из systemd. Подобно:
Nov 09 09:45:14 ubuntu0 [1572]: * SSL certificate verify ok.
Nov 09 09:45:14 ubuntu0 [1572]: * Using HTTP2, server supports multi-use
Nov 09 09:45:14 ubuntu0 [1572]: * Connection state changed (HTTP/2 confirmed)
Nov 09 09:45:14 ubuntu0 [1572]: * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
Nov 09 09:45:14 ubuntu0 [1572]: } [5 bytes data]
Nov 09 09:45:14 ubuntu0 [1572]: * Using Stream ID: 1 (easy handle 0x5568099c0900)
Nov 09 09:45:14 ubuntu0 [1572]: } [5 bytes data]
Nov 09 09:45:14 ubuntu0 [1572]: > POST / HTTP/2
Nov 09 09:45:14 ubuntu0 [1572]: > Host: ...
Nov 09 09:45:14 ubuntu0 [1572]: > User-Agent: curl/7.58.0
Nov 09 09:45:14 ubuntu0 [1572]: > Accept: */*
Nov 09 09:45:14 ubuntu0 [1572]: > Content-Length: 158
Nov 09 09:45:14 ubuntu0 [1572]: > Content-Type: application/x-www-form-urlencoded
Nov 09 09:45:14 ubuntu0 systemd[1]: myrandom.service: Failed with result 'exit-code'.
Nov 09 09:45:14 ubuntu0 [1572]: >
Nov 09 09:45:14 ubuntu0 systemd[1]: Failed to start my random service.
Nov 09 09:45:14 ubuntu0 [1572]: { [5 bytes data]
Nov 09 09:45:14 ubuntu0 [1572]: * Connection state changed (MAX_CONCURRENT_STREAMS updated)!
Nov 09 09:45:14 ubuntu0 [1572]: } [5 bytes data]
Я думаю, что было бы даже лучше, если бы я смог использовать функцию многострочного ведения журнала journald (которую я еще не пробовал). Итак, это мой вопрос: возможно ли это с помощью logger (1) или systemd-cat (1)?
P.S. Я знаю, что могу фильтровать журналы с помощью journalctl (например, _EXE=/lib/systemd/systemd
).