LINUX.ORG.RU

Как реализовать приоритеты логов для journalctl

 ,


0

2

Есть некое приложение под управлением systemd
Всё работает, всё пишется в journalctl, логи имеют префиксы типа INFO/WARN/ERROR/итд, но для journalctl это всего лишь текст лога, а не метаданные.
Поэтому нельзя фильтровать логи в духе

journalctl -u service -p err
(плюс не срабатывает встроенная подсветка)
Как поставить задачу разработчикам и как нужно изменить логирование, чтобы journalctl понимал где ошибка, где варнинг, где фатал итд итп и можно было применять встроенные средства фильтрации?

★★★★★

Походу, systemd ждет сообщения по syslog протоколу [1]. Наверное, нужно найти для для конкретного языка библиотеку/API которые умеют генерировать сообщения в этом формате [2].

[1] https://www.rfc-editor.org/rfc/rfc5424
[2] Для С: man 3 syslog

urxvt ★★★★★
()
Последнее исправление: urxvt (всего исправлений: 1)
Ответ на: комментарий от bigbit

Я посмотрю конечно, но там скорее всего какая-то стандартная библиотека логирования, которая просто в stdout пишет форматированные логи, без привязки к syslog или journalctl

zolden ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Блин, что ж так сложно то, и почему такой важный момент стыдливо обходится во всех гайдах «переведите ваше приложение на systemd в 1 клик»...
Получается сейчас 99% приложений не адаптированы под journalctl, а просто фигачат всё как есть в stdout ☹️

zolden ★★★★★
() автор топика

Всё таки оставлю тут ссылку куда меня Гугл завёл по этой теме:

http://0pointer.de/blog/projects/journal-submit.html

И так, и эдак, и всяко разно.

В частности:

The printed string in this example is logged at a default log priority of LOG_INFO[1]. Sometimes it is useful to change the log priority for such a printed string. When systemd parses STDOUT/STDERR of a service it will look for priority values enclosed in < > at the beginning of each line[2], following the scheme used by the kernel's printk()

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 1)
Ответ на: комментарий от Eshkin_kot

Нет, «универсальность» не является целью никогда. Она может являться необходимым злом, уравновешивающим другие цели, но рассмотрение всегда должно начинаться с наиболее технически корректного варианта.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)