Вы можете записать структурированные данные в systemd
и затем просмотреть их как есть или в формате json
Допустим, мы записываем пары ключ-значение в формате json
systemd-cat -t "struct_logs" echo '{"key1": "value1", "key2": 1234}'
Затем мычитать их как есть
sudo journalctl -t 'struct_logs' --lines 1 --no-pager
Apr 30 21:46:14 linux-ar struct_logs[17455]: {"key1": "value1", "key2": 1234}
или в формате json
sudo journalctl -t 'struct_logs' --lines 1 --no-pager -o json-pretty
{
"__CURSOR" : "s=b6d07ffffffffff2787cea140a0db88a5;i=db8;b=c9b2132ffffffffe5807625fe;m=9fa5b3f81;t=58fffffff87eab;x=6402818ea7e32a5b",
"__REALTIME_TIMESTAMP" : "1556671574343339",
"__MONOTONIC_TIMESTAMP" : "42854989697",
"_BOOT_ID" : "fffffffffffff24ec7a237b5e5807625fe",
"PRIORITY" : "6",
"_MACHINE_ID" : "fffffffffff66c86aaaaaaaaaa",
"_HOSTNAME" : "linux-ar",
"_TRANSPORT" : "stdout",
"_UID" : "1000",
"_GID" : "100",
"SYSLOG_IDENTIFIER" : "struct_logs",
"MESSAGE" : "{\"key1\": \"value1\", \"key2\": 1234}",
"_PID" : "17455"
}
В дальнейшем вы можете восстановить ваши точные сообщения журнала с помощью jq
sudo journalctl -t 'struct_logs' --lines 1 --no-pager -o json-pretty | jq -r '.MESSAGE'
{"key1": "value1", "key2": 1234}
Также возможно регистрировать пользовательские ключи при условии, что у пользователя есть на это соответствующие права.Служба должна быть в состоянии сделать это
sudo logger --journald <<end
MESSAGE_ID=67feb6ffbaf24c5cbec13c008dd72309
MESSAGE=The dogs bark, but the caravan goes on.
SYSLOG_IDENTIFIER=struct_logs
KEY=bark
VALUE=goes on
end
Надеюсь, это поможет.