Ответ
Для поиска исключений и ошибок в логах из командной строки чаще всего используется утилита grep.
Основные команды:
-
Поиск по нескольким ключевым словам Используйте флаг
-iдля поиска без учета регистра и|в качестве оператора "ИЛИ".# Искать строки, содержащие 'exception', 'error' или 'traceback' grep -i "exception|error|traceback" /path/to/your/logfile.log -
Поиск с отображением контекста Флаги
-A(after),-B(before) и-C(context) показывают строки вокруг найденного совпадения, что помогает понять причину ошибки.# Показать 5 строк до и 5 строк после слова 'Exception' grep -B 5 -A 5 "Exception" /path/to/your/logfile.log -
Рекурсивный поиск по директории Флаг
-r(recursive) позволяет искать во всех файлах внутри указанной директории.# Найти 'Traceback' во всех файлах в /var/log/ grep -r "Traceback" /var/log/ -
Вывод с подсветкой и номерами строк Для удобства анализа полезно подсвечивать найденные совпадения и видеть номера строк.
# Искать 'error' с подсветкой (`--color=auto`) и номерами строк (`-n`) grep --color=auto -n -i "error" /path/to/your/logfile.log
Для более сложного анализа, например, для извлечения полных стектрейсов, grep можно комбинировать с awk, sed или perl.
Ответ 18+ 🔞
Ну что, программист уставший, опять эти логи разгребать, как дерьмо в сортире после фестиваля? Слушай сюда, я тебе сейчас такую шпаргалку впилю, что ты сам от себя офигеешь.
Вот, допустим, у тебя в логах пиздец и бардак, а найти надо только самое сочное — ошибки да исключения. Твой лучший друг тут — утилита grep. Запоминай, как молитву.
Основные приёмы, чтобы не облажаться:
-
Поиск по всем закладкам сразу Допустим, тебе похуй, с большой или маленькой буквы написана ошибка. Искать надо и
exception, иerror, и этот ёбаныйtraceback. Делается так:# Ищешь всё подряд: exception, error или traceback. Флаг -i — это чтобы регистр не ебал мозг. grep -i "exception|error|traceback" /path/to/your/logfile.logВидишь эту палочку
|? Это как оператор "ИЛИ". Либо одно, либо другое, либо всё сразу — чих-пых тебя в сраку, найдём! -
Поиск с предысторией и последствиями Нашёл строчку с
Exception— и хуй поймёшь, что было до и что после. Для этого есть флаги контекста. Проще говоря, чтобы не быть как тот Герасим из рассказа — немым и тупым.# Показать 5 строк ДО и 5 строк ПОСЛЕ слова 'Exception'. Чтобы картина была, блядь, полная. grep -B 5 -A 5 "Exception" /path/to/your/logfile.log-B(before) — что было перед грехом.-A(after) — что случилось после. Овердохуище полезная штука. -
Рекурсивный поиск, или "А где, блядь, это записано?!" Когда не знаешь, в каком конкретно файле сокрыта истина, но знаешь папку (например,
/var/log/), просто прочеши всё, как ментальная собака.# Найти 'Traceback' во ВСЕХ файлах внутри /var/log/ и во всех её подпапках. grep -r "Traceback" /var/log/Флаг
-r(recursive) — твой пылесос в этом цифровом свинарнике. -
Красиво и по полочкам Чтобы глаза не ебало, когда смотришь на мегабайты текста, заставь
grepподсветить найденное и показать номера строк. Элементарно, Ватсон!# Ищешь 'error', подсвечиваешь цветом и видишь, на какой оно строчке. grep --color=auto -n -i "error" /path/to/your/logfile.log--color=auto— красота, ёпта.-n— номер строки, чтобы сразу знать, куда тыкать.
А если совсем пиздец и нужно вытащить целый стектрейс, то одного grep мало. Тут уже надо, блядь, мозги включать и комбинировать с awk, sed или этим старым перлом. Но это уже, как говорится, совсем другая история, и терпения моего на неё уже ноль ебать.