Re: Всего-то работа с логами ...

From
Sergey Andrianov (2:5020/1507.400)
To
Stanislav Latishko
Date
2002-12-30T22:25:40Z
Area
RU.ALGORITHMS
Здравствуй, Stanislav!

Однажды 26-Dec-02  в 17:19   Stanislav Latishko (via gate)
написал       All    по поводу
-=-   Всего-то работа с логами ...  -=-
SL> 	Главная проблема - я сам пока не понимаю чего хочу :)))

SL> 	Имеется гигантский лог (несколько Гб). В нем меня интересуют
SL> всего несколько сотен строк, но заранее нельзя сказать какие именно.
SL> Да чего я рассказываю ? - все по логам ошибки искали, представляют как
SL> это. Специфика данного случая - размеры лога. Пока вынужден ограничи-
SL> ваться кусками в полгига максимум - с ними я могу работать такими
SL> средствами как grep, head, tail, sed :)  Экранный вьюер уже дико
SL> тормозит при контекстном поиске - его я использую после того как
SL> вырезал "интересные" куски по 10-20 метров :)

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

SL> 	Kак взяться - слабо представляю. Если я создам на каждую
SL> запись хотя бы 4-байтовый дескриптор - объем этих дескрипторов
SL> уже приблизится к 10% от объема лога. В памяти столько не удержать.
SL> А если и удержать - так они строиться будут черт знает сколько...

SL> 	Kороче - не представляю за какой конец взяться ...

	Начать все-таки следует с постановки задачи. Т.к. требуется только вьювер, а не редактор, то  задача существенно упрощается, но все равно определенные сложности имеются. Допустим, ты решишь индексировать, тогда весь файл нужно будет просмотреть, а значит, считать. При скорости чтения с диска порядка 10 Мб/с такая операция при оптимальном написании будет читать 6 Гб ~10 мин. Но с этим еще можно мириться - можно запустить синхронно два процесса: один показывает на экране начальный фрагмент и обеспечивает выполнение запрошенных команд навигации (в пределах уже проиндексированной части), а второй - индексирует до упора, скажем, через 1000 строк. 
	Хуже другое: скажем, контекстный поиск - те же самые 10 мин в лучшем случае. 
	Так что сначала следует определить набор операций, которые данный вьювер будет выполнять, а потом разделить их на те, которые могут быть быстро выполнены с помощью индексированного массива (например, поиск строки по номеру), и те, которые не могут (например, контекстный поиск). 
	Возможно будет проще обрабатывать файл как двоичный. 
	А откуда берется сам листинг? Ты сам его пишешь? Может, тогда возможно сделать, чтобы все строки имели одинаковыю длину. 

                  До свидания,  в  22:13 MSK
                                 Sergey

---
 * Origin: Sergiev Posad (2:5020/1507.400)