Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Инструменты для анализа логов в питоне


(Artur Korobeynyk) #1

Есть утилита, формирующая и дописываящая логи по ходу своей работы. Всё как обычно, текстовый формат, содержит дату, процесс, обьект, выполняемое действие и т.д.

Размер каждого лога около гигабайта. Проблема в том, что протестировать некоторую функциональность можно только анализируя логи, так как через открытое API доступа к некоторым свойствам программы нету.

Вот интересно, может кто-то использовал при автоматизации какие-то библиотеки на питоне, помогающие на лету анализировать лог на наличие/отсутствие необходимых строк, при этом наблюдая только за блоками текста между указанными временными рамками, потому что пробежки по файлу размером в гигабайт занимают много времени и текст анализировать необходимо блоками, чтобы ускорить выполнение тестов. Кто сталкивался с проблемой, может подкинет названия используемых библиотек?

Могу и сам написать класс, но возможно есть более экономный вариант.

 


(Romanchuk Katerina) #2

Посмотри вот хороший продукт есть для решения такой задачи:  http://logstash.net/
 


(Artur Korobeynyk) #3

Спасибо за совет, Екатерина,  но логсташ слишком объемный для моей задачи, посмотрел. Все-равно что бить из гранатомета по мухам, плюс надо писать драйвер для внедрения в питон джава утилиты.

Написал сам следующим образом (криво, потому что считывание лога происходит единоразово и потом не дописывается, но мне хватает).  Вдруг кому-то поможет:

http://arturk.weebly.com/3/post/2013/02/log-reader-class-the-beginning.html


(Mykhailo Poliarush) #4

ну инструментов на самом деле очень много

например, http://fdik.org/pyPEG/

список инструментов можно посмотреть тут
http://wiki.python.org/moin/LanguageParsing
http://nedbatchelder.com/text/python-parsers.html

но действительно, если нужно сделать, что-то быстрое, то можно написать самому, как Вы и сделали

 

я посмотрел Ваш код, его можно использовать только слегка модифицировать

т.е. не считывать целиком весь файл каждый раз при вызове update, а запонимать последнюю позицию, которую вы прочитали

и потом при update, считывать файл с позиции, которую Вы уже запомнили

таким образом Вы уменьшите время на считываение файла