Программа для обработки больших файлов логов под Windows

Всем доброго времени суток и всяческих прочих разностей.

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

log

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

И, если под линуксом еще можно крутить-вертеть логами достаточно бодро штатной консолью, то под Windows некоторые элементарные действия могут вызывать, мягко говоря, определённого рода неудобства. В связи с этим один из коллег и членов команды, написал небольшую утилитку, которая существенно упрощает жизнь при работе с этими самыми логами.

Ею тут мы и хотим поделиться.


Небольшой скрипт для работы большими файлами логов

Здесь и далее, текст представлен по принципу "как есть" (за исключением мелких комментариев и стилистических правок), т.е непосредственно от автора программы.

По долгу службы приходиться сталкиваться с большими лог файлами (по 50 Гб к примеру). В связи с этим накатал программку для разбивки этих файлов по строкам. Программа проста и не замысловата и имеет всего три функции:

  • Собственно первая функция разделит файл на равное количество строк. В папке с программой создастся папка «new_folder» в ней будут создаваться файлы «1.txt», «2.txt» и тд, в каждый из которых будет писаться ровно столько строчек, сколько вы укажете;
  • Вторая функция вырежет из файла указанный диапазон строк. И в папке «new_folder» создастся файл «new_file.txt» в него собственно и запишутся строки;
  • Третья и четвертая отвечают за подсчет количества строк в логе или открытие нового файла, что, думаю, логично из скриншота ниже.

ВНИМАНИЕ! При повторном вызове функции она перепишет существующие файлы в папке «new_folder».

программа для работы с большими логами под Windows

Чтобы указать файл, собственно, не обязательно заморачиваться и можно просто перетащить его мышкой в окно (drag and drop) программы. Что касается ручного указания пути (методом ввода), то не важно указан путь в кавычках или без (программа сама поправит). Сетевые же пути так же поддерживаются в полном объёме.

Примечание:
Юникодовские файлы разбиваются и обрабатываются криво, но логи, как правило, в юникоде не пишут, - поэтому фиксить не стал.

Что касается быстродействия.. Программка написана на python и работает в один поток, а  следовательно сверх быстродействия ожидать от неё не приходиться. С другой стороны, вот небольшая статистика (тестировал на Сore2Duo файл размером в 8 Гб содержанием на 116.5 млн строк):

  • Посчитал строки за 03:00;
  • При разбивке файла по 50 000 000 строк ушло 13:30;
  • Вырезал из середины файла 1 000 000 строк за 3:20;

Такие дела.

Скачать можно по этой ссылке (размер около 2 Мб). Исходник можно взять здесь.

Установка не требуется, распакуйте архив чем-нибудь вроде 7-zip и запустите text_cut_line.exe. Использованию, думаю, понятно из скриншота.

На сим к послесловию.

Послесловие

Что касается жалоб и предложений, то я их конечно учту, и, возможно, даже что-то переделаю, но обещаний давать не могу т.к. во времени довольно ограничен.

К слову, если Вы решили доделать\переделать программу, то просьба связаться с автором данного проекта (или просто написать в комментарии к этому материалу) и предоставить новую версию + её исходный код. Таким же образом можно высказать пожелания, сообщить об ошибках и прочее.

Как и всегда, если есть какие-то мысли, вопросы, дополнения и всё такое прочее, то добро пожаловать в комментарии к этому материалу.

P.S. За существование данной статьи (и самой программы) спасибо Proxy

Sonikelf's Project's логотип Sonikelf's Project's логотип Космодамианская наб., 32-34 Россия, Москва (916) 174-8226
Sonikelf

Кстати говоря, не обязательно ковырять именно логи. Если Вам каким-то чудом достался другого типа огромный txt (да и просто текстовый, формат не суть) файл, то этой утилиткой его можно подробить и открывать с превеликим удовольствием.

Артем

Спасибо за Python! Как раз пытаюсь в нем разобраться)))
И на днях была задумка сделать обработку файлов в формате csv. Но пока не смог реализовать то, что хотел.)))

Kellis

А еще можно попробовать sublime text 2/3 :)

Sonikelf

Жует кстати сильно долго, мне вообще не понравилось. Тот же notepad++ у меня гиговый файл открывает на пару порядков быстрее.

Say-RUS

А случайно нет статьи о том как разбираться в этих логах?

Say-RUS

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