Re: Разбор ошибок в логах.
On 2017-06-22, Eugene Berdnikov wrote:
> Здесь мы уходим от исходного утверждения "grep в терминале бессмысленен".
> В less тоже есть подсветка, кстати.
>
>> grep -B120 ?? В отличии от Python причина ошибки в Java трейсе в конце...
>
> Здесь мы уходим от исходного утверждения "grep не работает". Работает.
> Только задаче он не сильно адекватен, но это уже другой вопрос.
>
Игра словами. Я не разбирался есть ли в less закладки. Но это потому что пока
я умею наиболее эфективно в Emacs копаться по логам.
Кстати Emacs на длинных строках (в десятки переводов строк) - тормозной.
Кроме трейсов есть еще длиннющие SQL запросы от ORM. Интерес зачастую
представляет "from", что можно поиском найти. Или попросить ORM
отформатировать однострочник в многострочник - становящийся читаемым.
> Тогда ещё одно событие, и мозг будет вынесен. :) Зато будет повод
> отвлечься и подумать о том, как структурировать отладочный вывод.
> Возможно, также упорядочить код и переделать структуры данных.
>
Вот я и задумался ))
В век, когда серверов много и приложения строятся на готовых компонентах
(черных ящиков) централизированая, унифицированая система разбора логов - это
уже не модно, а рабочий инструмент.
Цены от провайдеров комплексных решений в килобаксах в год. Не разумно за
сотню мегабайт логов в неделю отдавать такие деньги.
> У разработчика всегда есть выбор средств отладки. Он может пользоваться
> printf() и его аналогами, а может копаться в дампах, трейсах, ковыряться
> в программе дебаггером и т.д. При выборе неадекватного средства появляются
> шансы захлебнуться в потоках дерьма, особенно при близости к Java.
>
Не, у разработчика есть что другие сделали. Если ничего не сделали, то ничего
и нету.
printf() мой любимейший способ. Но он работает только:
* по знакомой кодобазе или имплементации знакомого протокола
* открытых исходниках
В чужих незнакомых компонентах printf() не работает. Т.е. суть метода -
подтвердить или опровергнуть гипотезу, вставив printf() в *правильное* место.
Логирование - аналог отладочного printf(), только систематично/структурировано.
> Сделайте отладочную выдачу короткой и осмысленной, и наступит облегчение.
> А для трейсов напишите свой фильтр, выделяющий нужные фрагменты.
Запись в текстовый файл в одну строку - решение для 80-ых. Структурированые
данные легче фильтровать, чем выкручиваться regex'ами.
--
http://defun.work/
Reply to: