(хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 03.08.15 16:00
Оценка:
Не знаю, как точно сформулировать, поэтому надеюсь на коллективную телепатию.

Суть вот в чём.
Допустим, я запускаю в консоли что-то длинное — компиляцию проекта, юнит-тесты и т.п.
Весь вывод можно ранжировать по трём категориям:
— шапка/подвал "будет запущено 100500 тестов..." / "100 тестов прошло, 500 провалилось" — чтобы понимать, чего следует ожидать от забега
— критичные сообщения "[FAILED] Some.Test" — чтобы видеть проблемы по мере их поступления, а не только постфактум, разгребая лог
— весь вывод — чтобы убедиться, что процесс не завис, грубо говоря
(возможно и более мелкое дробление)

Проблем здесь три
1) уровней критичности больше, чем 2 (т.е. нельзя просто так раскидать на stderr и stdout)
2) у исходной программы своё видение, что в какой поток валить; а мне хотелось бы, например, в критичном потоке видеть не только красное [FAILED], но и немножко предыстории
3) как визуализировать?

В общем-то, не так уж и сложно написать программу-фильтр (на питоне или даже awk) и запускать
my_unit_tests 2>&1 | my_pretty_filter


Но как эту красоту визуализировать?
Связываться с голыми curses не хочу. Вот если бы припахать tmux или screen какой-нибудь...

Открыть параллельно три терминала и подключить в каждом из них соответствующий tail -f ~/workspace/severityN.log — это самый последний вариант. Хуже не придумаешь.
Чуть лучше — запустить SublimeText и открыть в нём эти логфайлы — пусть он следит за изменениями. Но это тоже так себе.

Да, желательно решение, пригодное для убунты, мака и гитбаша. Или хотя бы для мака.
Перекуём баги на фичи!
Re: (хочу) вывод разной степени критичности
От: GarryIV  
Дата: 03.08.15 16:09
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Допустим, я запускаю в консоли что-то длинное — компиляцию проекта, юнит-тесты и т.п.


Консоль это хорошо конечно, но не всегда

WBR, Igor Evgrafov
Re[2]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 03.08.15 16:25
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Консоль это хорошо конечно, но не всегда

GIV>Image: InstinctJUnitIntegrationFailure.png

Это какая-то популярная нахлобучка на гугловские юнит тесты?

Моё гуглофу нашло только две поделки — gtest-bar и gtest-runner-qt
Не могу сказать, что я счастлив.
Перекуём баги на фичи!
Re: (хочу) вывод разной степени критичности
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 03.08.15 16:31
Оценка:
Здравствуйте, Кодт, Вы писали:
К>Допустим, я запускаю в консоли что-то длинное — компиляцию проекта, юнит-тесты и т.п.

Надо курить систему непрерывной интеграции. Лично я бы поискал необходимые возможности в Jenkins, причём в оригинальном репозитории, который со всеми плагинами.
Re: (хочу) вывод разной степени критичности
От: vsb Казахстан  
Дата: 03.08.15 17:11
Оценка: 34 (1)
tail можно натравливать на несколько файлов, если это поможет.
Re: (хочу) вывод разной степени критичности
От: boot  
Дата: 03.08.15 17:32
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Не знаю, как точно сформулировать, поэтому надеюсь на коллективную телепатию...


Ну не знаю) реализовали мы для своего проекта недавно подобную шнягу с кучкой транспортных протоколов, но открывать код пока не собираемся, а то еще конкуренты юзать начнут)

Вкратце, правильно мыслите. Идут сообщения

[PASS] test
, или
[....] test
details...
[FAIL]

все цветное, по завершению echo $? (код завершения) говорит о числе заваленных тестов, больше 255 уже не суть важно сколько не прошло.
Детализация задается параметрами, выхлопа и текста теста достаточно для анализа.
Тест конкретный запускается отдельно, если надо детальнее. Ну, плюшек много, очень) можно еще прикрутить.

Что еще добавить то? Напишите конкретнее что надо, пока не понятно в чем затык конкретно. Ах, да, все это в терминале запускается и выводится.
Жизнеспособность прямо пропорциональна простоте!
Re[2]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 03.08.15 17:33
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>tail можно натравливать на несколько файлов, если это поможет.


Круто, не знал. Одна беда, tail тупо демультиплексирует обновления хвостов, комментируя при этом, какой хвост поменялся. Что при этом на экране творится, догадаться несложно.
Перекуём баги на фичи!
Re[2]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 03.08.15 18:06
Оценка:
Здравствуйте, boot, Вы писали:

B>Что еще добавить то? Напишите конкретнее что надо, пока не понятно в чем затык конкретно. Ах, да, все это в терминале запускается и выводится.


tmux видел? Или, скажем, vim в режиме нескольких тайлов? Вот хочу похожую фигню.
Только мне vim шибко избыточен, хватило бы less, чтобы быстро прокручивать туда-сюда и искать.
А голый less не умеет обновлять в реальном времени. А голый tail не умеет прокручивать и искать.
А на голых curses писать — совсем уж базовую функциональность, конечно, можно — чтоб каждый поток в свою область; но делать геометрию и интерактивность вручную — свят-свят-свят.
Перекуём баги на фичи!
Re[3]: (хочу) вывод разной степени критичности
От: boot  
Дата: 04.08.15 03:11
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, boot, Вы писали:


B>>Что еще добавить то? Напишите конкретнее что надо, пока не понятно в чем затык конкретно. Ах, да, все это в терминале запускается и выводится.


К>tmux видел? Или, скажем, vim в режиме нескольких тайлов? Вот хочу похожую фигню.

К>Только мне vim шибко избыточен, хватило бы less, чтобы быстро прокручивать туда-сюда и искать.
К>А голый less не умеет обновлять в реальном времени. А голый tail не умеет прокручивать и искать.

Это 2 разных окна, одновременно чтобы показывался хвост и другое место потока, так не бывает. "tail не умеет прокручивать и искать" зато терминал умеет, правда у него надо размер буфера задать, а так, это почти что less.

К>А на голых curses писать — совсем уж базовую функциональность, конечно, можно — чтоб каждый поток в свою область; но делать геометрию и интерактивность вручную — свят-свят-свят.


А вам все вместе или можно частями?) В юникс лайк ос для каждой операции своя тулза, комбайны это другой путь. Чтобы сделать несколько окошек терминала в одном, заодно сохраняя сессию, это screen | tail, если файл читать | grep или sed, если фильтровать надо | в конце можно влепить преобразование текста, цвет, подчеркивание и пр. Как бы все очевидно, конвейер.
Жизнеспособность прямо пропорциональна простоте!
Re: (хочу) вывод разной степени критичности
От: Miroff Россия  
Дата: 04.08.15 04:17
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Не знаю, как точно сформулировать, поэтому надеюсь на коллективную телепатию.

К>Но как эту красоту визуализировать?

grc гиганта мысли не спасет?
Re: (хочу) вывод разной степени критичности
От: Sheridan Россия  
Дата: 04.08.15 05:40
Оценка:
А просто раскрасить? sed -e s///ig
c_std="^[[0;39m"
c_h_std="^[[1;37m"
c_pink="^[[0;35m"
c_h_pink="^[[1;35m"
c_red="^[[0;31m"
c_h_red="^[[1;31m"
c_cayan="^[[0;36m"
c_h_cayan="^[[1;36m"
c_yellow="^[[1;33m"
c_green="^[[0;32m"
c_h_green="^[[1;32m"
c_blue="^[[0;34m"
c_h_blue="^[[1;34m"

sheridan@pc-0019 / $ echo abcdef | sed -e 's/\(.*\)\(b\)\(.*\)/\1-\2-\3/'
a-b-cdef
Matrix has you...
Re: (хочу) вывод разной степени критичности
От: Grelkin  
Дата: 04.08.15 07:46
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Но как эту красоту визуализировать?

К>Связываться с голыми curses не хочу. Вот если бы припахать tmux или screen какой-нибудь...

К>Открыть параллельно три терминала и подключить в каждом из них соответствующий tail -f ~/workspace/severityN.log — это самый последний вариант. Хуже не придумаешь.

К>Чуть лучше — запустить SublimeText и открыть в нём эти логфайлы — пусть он следит за изменениями. Но это тоже так себе.

К>Да, желательно решение, пригодное для убунты, мака и гитбаша. Или хотя бы для мака.


Привет,

Я бы попробовал tail + tmux + tmux-copycat для подсвечивания результатов поиска, и возможно использования предопределенных шаблонов.
Re[2]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 04.08.15 09:06
Оценка:
Здравствуйте, Miroff, Вы писали:

M>grc гиганта мысли не спасет?


Однозначно, не спасёт. GTest и так выдаёт раскрашенный текст, а что толку, если зелёные, жёлтые и красные надписи стремительно скрываются за горизонтом среди обычной дебажной макулатуры?
Перекуём баги на фичи!
Re[4]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 04.08.15 09:12
Оценка:
Здравствуйте, boot, Вы писали:

B>А вам все вместе или можно частями?) В юникс лайк ос для каждой операции своя тулза, комбайны это другой путь. Чтобы сделать несколько окошек терминала в одном, заодно сохраняя сессию, это screen | tail, если файл читать | grep или sed, если фильтровать надо | в конце можно влепить преобразование текста, цвет, подчеркивание и пр. Как бы все очевидно, конвейер.


Так я поэтому и заговорил про тмукс.
Каким-то волшебным способом его запустить, чтобы в каждом под-окошке был свой процесс, а не интерактивный шелл по умолчанию. Чтобы размеры окошек выставились из конфига (и туда же записались, если я их подкручу).

Вот это и будет у-вей: тмукс отвечает за организацию экрана, авк/перл/питон за разбор монолитного выхлопа, лесс/тейл за показ. И скрипт интеграции всего этого добра.
Перекуём баги на фичи!
Re[2]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 04.08.15 09:13
Оценка:
Здравствуйте, Grelkin, Вы писали:

G>Я бы попробовал tail + tmux + tmux-copycat для подсвечивания результатов поиска, и возможно использования предопределенных шаблонов.


Можно посмотреть на пример этого "+"?
Перекуём баги на фичи!
Re[3]: (хочу) вывод разной степени критичности
От: oziro Нигерия  
Дата: 04.08.15 10:20
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>А голый less не умеет обновлять в реальном времени. А голый tail не умеет прокручивать и искать.


less умеет обновлять!

F нажми в открытом им файле (т.е. shift+f).

тут подробности http://blog.libinpan.com/2009/07/less-is-better-than-tail/
Отредактировано 04.08.2015 10:22 oziro . Предыдущая версия .
Re[5]: (хочу) вывод разной степени критичности
От: boot  
Дата: 04.08.15 12:32
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Так я поэтому и заговорил про тмукс.

К>Каким-то волшебным способом его запустить, чтобы в каждом под-окошке был свой процесс, а не интерактивный шелл по умолчанию. Чтобы размеры окошек выставились из конфига (и туда же записались, если я их подкручу).

К>Вот это и будет у-вей: тмукс отвечает за организацию экрана, авк/перл/питон за разбор монолитного выхлопа, лесс/тейл за показ. И скрипт интеграции всего этого добра.


Можно записать в ~/.screenrc или ~/.tmuxrc, благо примеров полно, например тут https://bbs.archlinux.org/viewtopic.php?id=55618
А вот если выхлоп одного процесса в разные окошки, это через сокеты прикрутить можно
Жизнеспособность прямо пропорциональна простоте!
Re[5]: (хочу) вывод разной степени критичности
От: wildwind Россия  
Дата: 04.08.15 16:15
Оценка:
Здравствуйте, Кодт, Вы писали:

К> Вот это и будет у-вей: тмукс отвечает за организацию экрана, авк/перл/питон за разбор монолитного выхлопа, лесс/тейл за показ. И скрипт интеграции всего этого добра.


Создавайте именованные пайпы (mkfifo) для каждого потока и соединяйте их, как вам нужно.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
Re[3]: (хочу) вывод разной степени критичности
От: zaufi Земля  
Дата: 04.08.15 16:30
Оценка: 110 (2)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, vsb, Вы писали:


vsb>>tail можно натравливать на несколько файлов, если это поможет.


К>Круто, не знал. Одна беда, tail тупо демультиплексирует обновления хвостов, комментируя при этом, какой хвост поменялся. Что при этом на экране творится, догадаться несложно.


посмотри на multitail: http://www.vanheusden.com/multitail/
Re[4]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 04.08.15 16:56
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>посмотри на multitail: http://www.vanheusden.com/multitail/


Вот оно оно! А то всё "используй греп... используй сокеты..."
Перекуём баги на фичи!
Re[5]: (хочу) вывод разной степени критичности
От: boot  
Дата: 04.08.15 17:24
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, zaufi, Вы писали:


Z>>посмотри на multitail: http://www.vanheusden.com/multitail/


К>Вот оно оно! А то всё "используй греп... используй сокеты..."


ну я понял) парсим отчеты поиска внеземных цивилизаций, матрица отдыхает

PROGA 1>log 2>&1

а потом в разных терминалах открыть

tail -f log | grep -B 5 FILED

tail -f log | grep DEBUG

tail -f log | grep -C 3 WARNING

tail -f log | grep -v ERROR | sed s/\ /\\t/

ну и так далее... А лог в рамдиск писать. Как-то так?
Все таки юникс прост (CL)
Жизнеспособность прямо пропорциональна простоте!
Re[6]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 04.08.15 17:27
Оценка:
Здравствуйте, boot, Вы писали:

B>ну я понял) парсим отчеты поиска внеземных цивилизаций, матрица отдыхает

B>а потом в разных терминалах открыть

Нет, не понял! А потом в одном терминале открыть. Но в разных областях экрана.
Перекуём баги на фичи!
Re[7]: (хочу) вывод разной степени критичности
От: Sheridan Россия  
Дата: 05.08.15 06:29
Оценка: +1
Здравствуйте, Кодт, Вы писали:

К>Нет, не понял! А потом в одном терминале открыть. Но в разных областях экрана.

Да пожалуйста. Всё сыпь в один файл. Запускай tmux, дели экран на куски и в каждом грепай из того файла нужное.
Matrix has you...
Re[8]: (хочу) вывод разной степени критичности
От: wildwind Россия  
Дата: 05.08.15 07:29
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S> К>Нет, не понял! А потом в одном терминале открыть. Но в разных областях экрана.


S> Да пожалуйста. Всё сыпь в один файл. Запускай tmux, дели экран на куски и в каждом грепай из того файла нужное.


Да и файл не нужен. Есть же именованные пайпы. В них и надо сыпать.
Hardware eventually fails. Software eventually works. ::: avalon/1.0.442
Re[3]: (хочу) вывод разной степени критичности
От: Grelkin  
Дата: 05.08.15 12:31
Оценка: -1
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Grelkin, Вы писали:


G>>Я бы попробовал tail + tmux + tmux-copycat для подсвечивания результатов поиска, и возможно использования предопределенных шаблонов.


К>Можно посмотреть на пример этого "+"?


Запросто: http://files.rsdn.ru/21967/out.gif
Re[3]: (хочу) вывод разной степени критичности
От: B-52 Россия  
Дата: 05.08.15 12:48
Оценка:
Здравствуйте, Кодт, Вы писали:

К>А голый less не умеет обновлять в реальном времени.


А что значит "голый"? В каких-то версиях у "less" нет ключа "+F"?
Re[4]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 05.08.15 12:55
Оценка:
Здравствуйте, B-52, Вы писали:

К>>А голый less не умеет обновлять в реальном времени.

B5>А что значит "голый"? В каких-то версиях у "less" нет ключа "+F"?

less +F хорошо работает на дописывание в хвост файла; на обновление файла целиком — глючит.
Перекуём баги на фичи!
Re[5]: (хочу) вывод разной степени критичности
От: · Великобритания  
Дата: 05.08.15 19:13
Оценка:
Здравствуйте, Кодт, Вы писали:

К> B5>А что значит "голый"? В каких-то версиях у "less" нет ключа "+F"?


К> less +F хорошо работает на дописывание в хвост файла; на обновление файла целиком — глючит.

А что именно глючит-то? Может "--follow-name" не хватает?
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: (хочу) вывод разной степени критичности
От: Кодт Россия  
Дата: 05.08.15 20:44
Оценка:
Здравствуйте, ·, Вы писали:

К>> less +F хорошо работает на дописывание в хвост файла; на обновление файла целиком — глючит.

·>А что именно глючит-то? Может "--follow-name" не хватает?

less отслеживает не изменение файла, а изменение его длины. И дочитывает остаток.
Для потоковых лог-файлов, впрочем, сойдёт.
Перекуём баги на фичи!
Re[7]: (хочу) вывод разной степени критичности
От: Mazay Россия  
Дата: 13.09.15 09:24
Оценка: 72 (1)
Здравствуйте, Кодт, Вы писали:


B>>ну я понял) парсим отчеты поиска внеземных цивилизаций, матрица отдыхает

B>>а потом в разных терминалах открыть

К>Нет, не понял! А потом в одном терминале открыть. Но в разных областях экрана.


Я делаю так:
while [ 1==1 ]; do clear; f=log_20_00; date +%s%N;  echo '----------------------';  tail -n 10 $f | grep  --color -E 'RDF|*'; echo '--------------------'; tail -n 100 $f | grep -v RDF | grep -v ISO | tail -n 10 | pygmentize -l cpp ; sleep 1; done


Области правда только горизонтально расположены, но обычно этого хватает.
Главное гармония ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.