LINUX.ORG.RU
ФорумAdmin

Отключить ANSI при выводе логов Докера

 ,


0

1

По ходу работы Дженкинс запускает docker logs. В логе в вывод программы в произвольных местах добавляется куча мусора наподобие

←[2J←[?25l←[m←[H

(символ 0x1b заменил стрелкой, чтобы движок ЛОРа не ругался)
Гугл находит множество жалоб на подобное несколько лет назад и ключи командной строки, отключающие ANSI-форматирование. Но в современных версиях они не работают. Даже исходников, куда добавляли возможность отключать эскейп-пследовательности по ссылкам из багов нет.

Нашёл упоминания, что вывод идёт через библиотеку Logrus, которая автоматически определяет, когда следует красиво форматировать, когда нет. Но в моём случае (извращения с Вайном) что-то не срабатывает.

Как принудительно отключить добавления эскейп-последовательностей?

P.S. Проверил /var/log/containers/. По умолчанию лог хранится в виде файла JSON, в котором нет никакого форматирования Esc-последовательностями. Они добавляются только при выводе через docker logs.

P.P.S. После обновления Дженкинса и плагинов мусор в логи добавлять перестало. Надеюсь, надолго.

★★

Скорее всего это у тебя приложение рисует цвета либо использует другие escape-последовательности, а не сам дженкинс.

Что у тебя в докере такое запускается-то хоть?

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

А может взять и рисовать цвета? https://plugins.jenkins.io/ansicolor/

Не работает :)

И вообще, нужно потом этот лог скармливать Эластику. Удалять эскейп-последовательности из середины ключевых слов можно. Но проще не допускать их появления.

Что у тебя в докере такое запускается-то хоть?

Закрытая проприертарная программа под Вайном. Доступ к исходникам есть.

Скорее всего это у тебя приложение рисует цвета либо использует другие escape-последовательности, а не сам дженкинс.

Вчера весь день с мэйнтэйнером изучали исходники и доки к рантаймам. Программа ничего раскрашивать и форматиртовать не умеет. А вот Докер такие фокусы допускал несколько лет назад.

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

А это точно не сам дженкинс добавляет? Там, помнится, была опция «Colorize build output» она как раз их и добавляла.

Опция отключена.

Строго говоря, это – не раскрашивание, а только форматирование, и оно наблюдается и в консоли по docker logs, если вручную повторить действия Дженкинса.

olegd ★★ ()

Самого недавно интересовал вопрос как отключить или игнорировать вывод подобных последовательностей (желательно на уровне настроек терминала, чтоб для всех программ сразу).

Пока что нашёл такое (https://unix.stackexchange.com/questions/14684/removing-control-chars-including-console-codes-colours-from-script-output/527259#527259):

... | ansi2txt
spirit ★★★★★ ()