Реализации системного журнала, принимающие RFC3164 сообщения, должны распознавать первую часть сообщения ("foo:"
в примере) как TAG.
Часть MSG имеет два поля, известные какПоле TAG и поле CONTENT.Значением в поле TAG будет имя программы или процесса, который сгенерировал сообщение.
Код Python ..
import logging
from logging.handlers import SysLogHandler
h = SysLogHandler(address='/dev/log')
h.setFormatter(logging.Formatter('foo: %(message)s'))
logging.getLogger().addHandler(h)
logging.error('bar')
.. отправит его в сокет системного журнала
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 10) = 0
sendto(3, "<11>foo: bar\0", 13, 0, NULL, 0) = 13
close(3)
Что, в свою очередь, приводит к этому в журнале systemd.
Dec 13 14:48:20 laptop foo[1928]: bar
Подробности сообщения журнала:
{
..
"PRIORITY" : "3",
"SYSLOG_FACILITY" : "1",
"SYSLOG_IDENTIFIER" : "foo",
"MESSAGE" : "bar",
"_PID" : "1928",
}
Работает с Py2.6, 2.7,3.4, 3.5 и системный журнал Systemd.Он также может работать с другими реализациями системного журнала (если они принимают RFC3164).Это решение, вероятно, сломается, когда SysLogHandler в Python по умолчанию установит новый RFC5424.