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/