LINUX.ORG.RU
ФорумAdmin

systemd цвета

 ,


0

1

Создал unit, пишу в stderr

daemon.js

#!/usr/bin/env node
process.stderr.write("ERROR\n");
process.stdout.write("OUT\n");



Смотрю
journalctl --user -f -u daemon


Не вижу цветов, не вижу с какого потока пришло. Неужели так все убого?

★★★★

А откуда должны взяться «цвета» и почему должно делаться различие между потоками?

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

Пишу в STDERR - красный, остальное БЕЛЫЙ )) Как-то так - я считаю! Ну это же логично? Ну ладно цвета, но даже нет подписи из какого потока сыпется в логи, что уж совсем тупо

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

А для чего? Хороошо, как другим способом мне разделить логи, чтобы визуально было понятно где ошибка, а где просто вывод?

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

А для чего?

Ну вообще в stdout идёт обычный значимый вывод, а в stderr ошибки. Обычно. Всякий debug — тоже в stderr. С цветами это никак не связано. Смысл в том, чтобы можно было, например, перенаправить их в разные файлы (в том числе, например, и один в /dev/null) или пайпнуть в разные процессы и т.д. и т.п.

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

Хороошо, как другим способом мне разделить логи, чтобы визуально было понятно где ошибка, а где просто вывод?

Просто в консоль или лог — писать сразу с цветами. В systemd-шный журнал:

echo 'OUT вот' | systemd-cat -p info
echo 'WARNING упс' | systemd-cat -p warning
echo 'ERROR ух ё' | systemd-cat -p error
CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от gobot

А для чего?

stdout — для полезного (структурированного) вывода, stderr — для любых диагностических сообщений.

Если твоя программа не является юниксовым текстовым фильтром, то про stdout можно не вспоминать.

Хороошо, как другим способом мне разделить логи, чтобы визуально было понятно где ошибка, а где просто вывод?

Вот так: https://man.archlinux.org/man/sd-daemon.3.en#DESCRIPTION

#define SD_EMERG   "<0>"  /* system is unusable */
#define SD_ALERT   "<1>"  /* action must be taken immediately */
#define SD_CRIT    "<2>"  /* critical conditions */
#define SD_ERR     "<3>"  /* error conditions */
#define SD_WARNING "<4>"  /* warning conditions */
#define SD_NOTICE  "<5>"  /* normal but significant condition */
#define SD_INFO    "<6>"  /* informational */
#define SD_DEBUG   "<7>"  /* debug-level messages */

These prefixes are intended to be used in conjunction with stderr-based logging (or stdout-based logging) as implemented by systemd. If a systemd service definition file is configured with StandardError=journal or StandardError=kmsg (and similar with StandardOutput=), these prefixes can be used to encode a log level in lines printed. This is similar to the kernel printk()-style logging. See klogctl(2) for more information.

The log levels are identical to syslog(3)’s log level system. To use these prefixes simply prefix every line with one of these strings. A line that is not prefixed will be logged at the default log level SD_INFO.

process.stderr.write("<3>ERROR\n") нарисует строчку красным, а process.stderr.write("<4>WARNING\n") — жёлтым, и так далее.

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

Оооо... Я от этих костылей ушел и как оказывается к ним и пришел )) Я думал в journalctl это есть «изкаробки»... Собственно и начал переходить от supervisord к systemd, с одной стороны из-за этого с другой думал ещё и логи будет красить, а тут

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

Ну я же привёл пример как — через systemd-cat.

Сам не ппроверял, я сейчас на Void, он свободен от systemd.

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

Ну это костыли, я ожидал БОЛЬШЕГО. Парсить вручную и разукрашивать так себе занятие...

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

При всей моей нелюбви к системд, всё же: как ему ещё догадаться, что в какой цвет тебе разукрашивать, если ему не сообщить? stderr у тебя один, а уровней важности инфы для stderr — 7. Как он поймёт, какой из 7 выбрать-то, если ты ему не скажешь?

P.S. Только не говорите Поттерингу, что у кого-то возникла такая проблема, а то придумает туда туда целую LLM встроить, которая будет анализировать само сообщение об ошибке на основе естественного языка и решать, насколько это важно.

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

Я наверное не теми терминами оперирую. Там есть LEVEL (параметр -p), и он РАЗУКРАШИВАЕТСЯ. Это хорошо. Тогда другой вопрос, как мне записать в этот лог строчку определенного LEVEL в своем ДЕМОНЕ?

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

Что именно «есть изкаробки»? Что именно ты не хочешь «парсить вручную»?

Ты как будто сам не понимаешь, чего хочешь (кроме того, чтобы была одна кнопка «сделать за5.1сь», чего естественно в мире не бывает).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.