Ответ
Для фильтрации ошибок из логов я обычно использую grep с паттернами, соответствующими формату логов конкретного приложения. Ключевой момент — понимать, как ошибки маркируются в вашей системе.
Базовый пример для системных логов:
grep -i "error|fail|critical|exception" /var/log/syslog
-i— игнорирует регистр (Error, ERROR).|в паттерне — логическое ИЛИ.
Для структурированных логов (JSON):
grep '"level":"error"' /var/log/app.log | jq . # jq для красивого вывода
Практические примеры из моей работы:
- Nginx/Apache: Ищу HTTP-коды состояния 5xx и 4xx.
grep -E " 5[0-9]{2} | 4[0-9]{2} " /var/log/nginx/access.log - Docker контейнеры: Просмотр логов конкретного контейнера с фильтром.
docker logs my-app-container 2>&1 | grep -A 2 -B 2 "ERROR"Флаг
-A 2 -B 2показывает 2 строки до и после совпадения для контекста. - Журнал systemd (journalctl): Более мощный и структурированный способ.
journalctl -u my-service.service --since "1 hour ago" -p errПараметр
-pзадает приоритет (emerg, alert, crit, err).
Важно: Для постоянного мониторинга настройте сбор логов в централизованную систему (ELK Stack, Loki, Datadog), где фильтрация и алертинг на ошибки настраиваются через UI или конфигурационные файлы.