Я наблюдаю следующее поведение при входе в системный журнал из внешнего приложения: если я отправляю правильно сформированное сообщение системного журнала в сокет UDP, rsyslog правильно его анализирует, однако если то же самое сообщение отправляется в сокет домена UNIX (/ dev / log), он вообще не анализируется (rsyslog в основном предполагает, что все, что он получил, является сообщением, поэтому нет отметки времени, ничего).
Рассматриваемое сообщение
<142>1 2010-12-29T11:11:11Z foo bar 123 baz - A Message
который разбирается как
Dec 29 11:11:11 foo bar[123] A Message
если это не так.
Вероятно, вам следует отправить сообщение без имени хоста (foo) и в формате rfc3164 (а не rfc5424, как указано выше), чтобы оно было проанализировано.
При синтаксическом анализе сообщений rsyslog делает все возможное, чтобы понять их смысл.
Для сообщения, полученного из сокета Unix, rsyslog принимает сообщения, подобные RFC 3164, используя следующие поля: pri
, timestamp
, tag
, и content
.
Он принимает различные форматы сообщений, например:
just a message
<pri>message
<pri>tag: msg
О отметках времени сообщений:
SysSock.IgnoreTimestamp
опция включена по умолчанию, ваши временные метки будут игнорироваться, пока вы не отключите эту опцию.В hostname
поле не может быть изменено. rsyslog всегда получает его из своей конфигурации.