ℹ️ При анализе логов на серверах или в контейнерах часто требуется быстро найти нужную информацию, особенно в случаях, когда логи «завалены» повторяющимися сообщениями. Обычно для этого используют такие команды, как grep, но можно пойти дальше и сделать поиск более удобным, добавив цветное выделение и сортировку по ключевым словам.
✏️ 1. Цветное выделение важных строк в логах с awk
Представим, что у вас есть файл логов app.log, в котором вы хотите выделить все строки, содержащие слово "error" красным, "warning" — жёлтым, а "info" — зелёным. Для этого используйте команду:
awk '
/error/ {print "\033[31m" $0 "\033[39m"}
/warning/ {print "\033[33m" $0 "\033[39m"}
/info/ {print "\033[32m" $0 "\033[39m"}
' app.log
ℹ️ В этом примере:
- • \033[31m — это ANSI-код для красного цвета;
- • \033[33m — для жёлтого;
- • \033[32m — для зелёного;
- • \033[39m — сброс цвета до стандартного.
👨💻 2. Вывести только строки с ключевыми словами
Если вы хотите игнорировать всё остальное, можно немного модифицировать команду:
awk '
/error/ {print "\033[31m" $0 "\033[39m"}
/warning/ {print "\033[33m" $0 "\033[39m"}
/info/ {print "\033[32m" $0 "\033[39m"}
' app.log | grep -E "error|warning|info"
📑 3. Если необходимо искать ключевые слова в режиме реального времени
Например, из потока вывода docker logs, можно комбинировать с tail -f:
tail -f app.log | awk '
/error/ {print "\033[31m" $0 "\033[39m"}
/warning/ {print "\033[33m" $0 "\033[39m"}
/info/ {print "\033[32m" $0 "\033[39m"}
'
🖥 4. В завершение, можно создать скрипт для регулярного использования:
#!/bin/bash
tail -f $1 | awk '
/error/ {print "\033[31m" $0 "\033[39m"}
/warning/ {print "\033[33m" $0 "\033[39m"}
/info/ {print "\033[32m" $0 "\033[39m"}
'
Сохраните его как log_color.sh, сделайте исполняемым (chmod +x log_color.sh), и теперь можно запускать команду так:
./log_color.sh app.log
✳️ Этот подход значительно ускорит анализ логов, делая визуально очевидными ошибки, предупреждения и информацию. Цветной вывод помогает быстро заметить проблемы, даже в больших объёмах логов.
tags: #логирование #linux #bash
🧭 @recura_tech



