Я хотел бы иметь возможность отслеживать вывод файла журнала сервера, который имеет такие сообщения:
INFO
SEVERE
и т.д., и если это так SEVERE
, покажите линию красным цветом; если это INFO
, зеленым цветом. Какой псевдоним можно настроить для tail
команды, которая поможет мне сделать это?
command-line
colors
alias
highlighting
tail
Амир Афганский
источник
источник
sed
: stackoverflow.com/a/14691971/52074Ответы:
Попробуйте мультитейл . Это übergeneralization
tail -f
. Вы можете просматривать несколько файлов в отдельных окнах, выделять строки в зависимости от их содержимого и многое другое.Цвета настраиваются. Если цветовая схема по умолчанию у вас не работает, напишите свою собственную в файле конфигурации. Например, позвоните
multitail -cS amir_log /path/to/log
со следующим~/.multitailrc
:Другое решение, если вы находитесь на сервере, где неудобно устанавливать нестандартные инструменты, - это объединить
tail -f
с sed или awk, чтобы добавить последовательности управления выбором цвета. Это требуетtail -f
немедленного сброса стандартного вывода, даже если стандартный вывод представляет собой канал, я не знаю, все ли реализации делают это.или с седом
Если ваш sed не GNU sed, замените
\o033
его буквальным escape-символом и удалите--unbuffered
.Еще одна возможность - запустить
tail -f
в буфере оболочки Emacs и использовать возможности окраски синтаксиса Emacs.источник
sed
? (извините за то, что ленился и сам не понял это!) Но не могли бы вы добавитьsed
пример.tail -f
сawk
кодом, если строка не имеет INFO и SEVERE , строка не будет напечатана. Как я могу распечатать оставшиеся строки? (Строка не должна быть цветной); next
перед закрывающими скобками, чтобы пропустить дальнейшую обработку, и новую строку обработки1 {print}
в конце (1
означает всегда).sed --unbuffered -e 's/\(.*FATAL.*\)/\o033[1;31m\1\o033[0;39m/' -e 's/\(.*ERROR.*\)/\o033[31m\1\o033[39m/' -e 's/\(.*WARN.*\)/\o033[33m\1\o033[39m/' -e 's/\(.*INFO.*\)/\o033[32m\1\o033[39m/' -e 's/\(.*DEBUG.*\)/\o033[34m\1\o033[39m/' -e 's/\(.*TRACE.*\)/\o033[30m\1\o033[39m/' -e 's/\(.*[Ee]xception.*\)/\o033[1;39m\1\o033[0;39m/'
GRC , универсальный колоризатор довольно крутой.
Просто сделать
и наслаждаться!
Вы также найдете его на GitHub .
источник
Вы смотрели на ccze ? У вас есть возможность настроить цвета по умолчанию для некоторых ключевых слов, используя опцию
-c
или непосредственно в файле конфигурации. Если ваш экран очищается после раскраски, вы должны использовать опцию-A
.Редактировать:
Если вы действительно хотите, чтобы вся линия была окрашена в красный цвет, вы также можете попробовать следующее:
\e[1;31m
даст вам красный цвет. Если вы хотите немного желтого, используйте\e[1;33m
и для зеленого использования\e[1;32m
.\e[0m
Восстанавливает нормальный цвет текста.источник
\007
к концу регулярного выражения, например:perl -pe 's/(ERROR)/\033[31m$1\033[0m\007/g;'
. Это работает замечательно, если вы используете tmux сset -g bell-action any
, и в этом случае, если у вас есть журнал в другом окне, это имя окна будет предупреждать всякий раз, когда регулярное выражение находит совпадение.Взгляните на lnav , расширенный просмотрщик файлов журнала.
Это может также довольно печатать различные форматы.
До:
После:
источник
Вы можете использовать радугу , которая окрашивает линии на основе регулярных выражений:
Он также поставляется в комплекте с предопределенными конфигурациями , например, для журналов Tomcat:
(отказ от ответственности: я автор)
источник
rainbow
является удивительным. Вы автор? Если это так, пожалуйста, отредактируйте свой ответ с указанием авторства.Вы можете использовать colortail :
источник
apt install colortail
и он должен работать без редактирования ~ / .colortail /.Также обратите внимание, что если вы просто хотите найти одно соответствующее регулярное выражение, GNU grep with
--color
будет работать - просто передайтеtail
через него свой вывод.источник
grep -A9999 -B9999
regex
, он покажет все строки, если у вас нет 10 000 несовпадающих строк подряд. Используйте что-то вроде,GREP_COLORS="ms=31:sl=33:cx=32" grep -A9999 -B9999 SEVERE
чтобы показать словоSEVERE
красным, остальные строки SEVERE - желтым, а все остальные (не SEVERE) строки (до 9999) - зеленым.--color=always
на grep, а не просто--color
, в зависимости от порядка вашего канала, но да, это работает хвост (GNU coreutils) 8.27, установленный на моем компьютере.Чтобы получить цветной вывод из стандартных команд, как
grep
, вы должны установить этоalias
в вашем.bashrc
когда вы что-то делаете в своем файле, вы видите что-то вроде этого (но, вероятно, красным):
Если вы хотите использовать
tail
илиawk
и хотите, чтобы цвет сохранился в трубе, то псевдонима недостаточно, и вы должны использовать--color=always
параметр, например:Если вы хотите, чтобы цветной текст с
awk
историей был немного сложным, но более мощным, например:с каждой линией в своем собственном цвете.
Есть много других способов получить цветной текст из оболочки с помощью других инструментов, и они хорошо описаны другими участниками.
источник
Мне очень нравится колорекс . Просто, но сытно.
источник
Основываясь на ответе @uloBasEI, я пытался использовать
... | perl ... | perl ...
, но Linux pipe немного сумасшедший и слишком медленный. Если я добавлю все правила только в однуperl
команду, она будет работать нормально.Например, создайте
perl
файл colorTail.pl, как показано ниже:Используйте это как:
ПРИМЕЧАНИЕ: вы можете использовать его и на MobaXTerm ! Просто скачайте
perl
плагин с сайта MobaXTerm .источник
источник
source-highlight
не является широко установленной командой, поэтому вы должны хотя бы дать ссылку на сайт проекта.Одним из решений, которое работает для окрашивания всех видов текста, а не только файлов журналов, является инструмент Python ' colout '.
Где любой текст в выводе «myprocess», который соответствует группе 1 регулярного выражения, будет окрашен в color1, группа 2 в color2 и т. Д.
Например:
т.е. первая группа регулярных выражений (parens) соответствует начальной дате в файле журнала, вторая группа соответствует имени файла python, номеру строки и имени функции, а третья группа соответствует сообщению журнала, которое следует после этого. Это выглядит так:
Обратите внимание, что строки или части строк, которые не соответствуют ни одному из моих регулярных выражений, все еще отражаются, так что это не похоже на 'grep --color' - ничего не отфильтровывается из вывода.
Очевидно, что это достаточно гибко, так что вы можете использовать его с любым процессом, а не только с файлами журналов. Обычно я просто запускаю новое регулярное выражение на лету, когда хочу что-то раскрасить. По этой причине я предпочитаю colout любому пользовательскому инструменту окраски лог-файлов, потому что мне нужно изучить только один инструмент, независимо от того, что я раскрашиваю: ведение журнала, вывод теста, выделение синтаксиса фрагментов кода в терминале и т. Д.
источник
Бесстыдный плагин: я написал инструмент под названием TxtStyle, который делает нечто похожее на опции, упомянутые ранее. Вы можете запустить его следующим образом:
Вы также можете определить именованные стили в файле конфигурации (
~/.txts.conf
) и использовать его следующим образом:(
ifconfig
стиль определяется из коробки)источник
GRC точно!
настройте ваши сборщики с помощью регулярных выражений в файле: ~ .grc / conf.tail (или любое другое имя)
командная строка:
Результаты:
информация для настройки grc: https://github.com/manjuraj/config/blob/master/.grc/sample.conf
источник
Я написал функцию bash, которая принимает до трех параметров и выполняет grep-подобный фильтр текстового файла и выводит текст на экран в цвете.
Я также хотел бы видеть функцию хвоста, которая бы делала это, но еще не нашла ее.
Эта функция также может быть улучшена - я был бы признателен за любую помощь, как сделать ее лучше.
источник
конечно !
Я долго писал функцию «egrepi», основанную на 8 определениях цветовых переменных. Это работает ТОЛЬКО в виде цветной функции "tail -f".
1. setColors
во-первых, сначала нужно вызвать функцию цветовых переменных:
2. эгрепи
и функция egrepi, эффективная и элегантная: циклическое изменение цвета между 8 и более цветами (вашими потребностями) И протестировано под 3 разными ОС Unix с комментариями:
3. Использование
команда | эгрепи слово1 .. словоN
источник
Вы также можете взглянуть на lwatch :
tail -f /var/log/syslog | lwatch --input -
источник
Что касается цветовых кодов, я бы использовал tput:
Смотрите для справки:
man tput
Затем:
источник
Некоторое время назад публикует утилиту Node Js - log-color-highlight
источник