[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: