Раскрасить хвостовой выход - программирование
Подтвердить что ты не робот

Раскрасить хвостовой выход

Я пытался сделать хвост немного более читаемым для стартапов сервера. Моя текущая команда отфильтровывает большинство сообщений INFO и DEBUG при запуске:

tail -F ../server/durango/log/server.log | grep -e "ERROR" -e "WARN" -e "Shutdown" -e "MicroKernel" | grep --color=auto -E 'MicroKernel|$'

Я бы хотел сделать что-то, что выделит WARN желтым цветом и ОШИБКА красным цветом, а MicroKernel - зеленым. Я пробовал просто конвейер grep --color = auto несколько раз, но единственным оставшимся цветом является последняя команда в канале.

Есть ли один лайнер для этого? Или даже многострочный?

4b9b3361

Ответ 1

да, есть способ сделать это. То есть, пока ваш терминал поддерживает управляющие последовательности ANSI. Это большинство терминалов, которые существуют.

Я думаю, что мне не нужно объяснять, как grep, sed и т.д.

смотри ниже, это сделает

WARN yellow
ERROR red
foo   green

вот пример:

kent$ echo "WARN
ERROR
foo"|sed 's#WARN#\x1b[33m&#; s#ERROR#\x1b[31m&#; s#foo#\x1b[32m&#'

Примечание: \x1b является шестнадцатеричным для символа ESC (^V Esc).

чтобы увидеть результат:

enter image description here

Ответ 2

Я написал a script за эти годы назад. Вы можете легко покрыть случай нескольких цветов, проводя последовательные вызовы highlight друг другу.

Из README:

Usage: ./highlight [-i] [--color=COLOR_STRING] [--] <PATTERN0> [PATTERN1...]

This is highlight version 1.0.

This program takes text via standard input and outputs it with the given
perlre(1) pattern(s) highlighted with the given color.  If no color option
is specified, it defaults to 'bold red'.  Colors may be anything
that Perl Term::ANSIColor understands.  This program is similar to
"grep --color PATTERN" except both matching and non-matching lines are
printed.

The default color can be selected via the $HIGHLIGHT_COLOR environment
variable.  The command-line option takes precedence.

Passing -i or --ignore-case will enable case-insensitive matching.

If your pattern begins with a dash ('-'), you can pass a '--' argument
after any options and before your pattern to distinguish it from an
option.

Ответ 4

Вы можете создать цветной журнал вместо использования сложной команды.

enter image description here

Для php это так:

echo "^[[30;43m".$ip."^[[0m";

Ключевым моментом является использование ctrl- v ctrl- [для ввода зеленого цвета ^ [ в режиме вставки в vim, прямой ввод ^ [не работает.

enter image description here

Больше информации здесь

Ответ 5

Я использовал инструмент под названием grc для этого в течение многих лет. работает как шарм. Он поставляется с довольно неплохими шаблонами для многих стандартных выходов и форматов журналов, и его легко определить самостоятельно. Команда, которую я часто использую,

grc tail -f /var/log/syslog

Он окрашивает вывод системного журнала, поэтому легко обнаружить ошибки (обычно помеченные красным цветом).

Найдите инструмент здесь:

https://github.com/garabik/grc

(это также доступно как пакет для большинства распространенных вкусов Linux).