Ускорение поиска ошибок в логах с awk и цветом

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

awkлогированиеbash

ℹ️ При анализе логов на серверах или в контейнерах часто требуется быстро найти нужную информацию, особенно в случаях, когда логи «завалены» повторяющимися сообщениями. Обычно для этого используют такие команды, как 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

Скрин терминала с цветным выводом логов: ошибки выделены красным, предупреждения — жёлтым, info — зелёным для быстрого визуального анализа.
Цветное выделение логов в терминале — пример вывода, показанный в посте.

Читайте так же