Пишу в STDERR - красный, остальное БЕЛЫЙ )) Как-то так - я считаю! Ну это же логично? Ну ладно цвета, но даже нет подписи из какого потока сыпется в логи, что уж совсем тупо
Ну вообще в stdout идёт обычный значимый вывод, а в stderr ошибки. Обычно. Всякий debug — тоже в stderr. С цветами это никак не связано. Смысл в том, чтобы можно было, например, перенаправить их в разные файлы (в том числе, например, и один в /dev/null) или пайпнуть в разные процессы и т.д. и т.п.
Внутри того, куда ты перенаправил потоки, можно делать с ними уже что душе угодно. В том числе и красить один из них в красный, а другой в синий, если так хочется. Но не обязательно и не то чтобы «логично».
Хороошо, как другим способом мне разделить логи, чтобы визуально было понятно где ошибка, а где просто вывод?
Просто в консоль или лог — писать сразу с цветами. В systemd-шный журнал:
#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") — жёлтым, и так далее.
Оооо... Я от этих костылей ушел и как оказывается к ним и пришел )) Я думал в journalctl это есть «изкаробки»... Собственно и начал переходить от supervisord к systemd, с одной стороны из-за этого с другой думал ещё и логи будет красить, а тут
При всей моей нелюбви к системд, всё же: как ему ещё догадаться, что в какой цвет тебе разукрашивать, если ему не сообщить? stderr у тебя один, а уровней важности инфы для stderr — 7. Как он поймёт, какой из 7 выбрать-то, если ты ему не скажешь?
P.S. Только не говорите Поттерингу, что у кого-то возникла такая проблема, а то придумает туда туда целую LLM встроить, которая будет анализировать само сообщение об ошибке на основе естественного языка и решать, насколько это важно.
Я наверное не теми терминами оперирую. Там есть LEVEL (параметр -p), и он РАЗУКРАШИВАЕТСЯ. Это хорошо. Тогда другой вопрос, как мне записать в этот лог строчку определенного LEVEL в своем ДЕМОНЕ?