Re: header вместо error_page

Andrey Uteshev andrey at uteshev.ru
Fri Dec 7 10:42:15 MSK 2007


Парсю большие логи на лету через

while .. tail -f /var/log/logfile do
 echo ... > 'date " .. %d %m..log "'.

создаю очередь из своих файлов, на каждую минуту свой

сорри, пишу с телефона: )

07.12.07, Alexey V. Karagodov<karagodov at gmail.com> написал(а):
> в тех же логах, параметры разделены обычными пробелами
> при правильном написании (webalizer например) распарсивание такого
> лога занимает не на много больше времени чем выборка из строки без
> поиска, т.е. тупо взять такие то байты и считать это временем, скажем
> и гибкости прибавляет немерянно
> а то получится FAT с длинными именами
> "вот у меня есть косочек длинного имени, следующая часть лежит там-то"
>
> On 06.12.2007, at 17:03, Евгений Васильев wrote:
>
> > Здравствуйте, Igor.
> >
> > Вы писали 6 декабря 2007 г., 16:17:45:
> >
> > IS> On Thu, Dec 06, 2007 at 03:27:00PM +0300, Евгений Васильев wrote:
> >
> >>>>> Замечательно! вот бы еще сделать так, чтобы строки лога имели
> >>>>> фиксированную длину, для быстрого его чтения.
> >>>>> т.е уровнять параметры $user_agent $refferer $request
> >>>>> =)
> >>>
> >>> IS> Это очень просто. Для этого нужно, чтобы клиенты пользовались
> >>> только одной
> >>> IS> версией браузера, делали бы одинаковый запрос, и делали бы его
> >>> с одного
> >>> IS> и того же сайта.
> >>>
> >>> :)
> >>>
> >>> А всеже, неплохо было бы иметь переменные или просто параметр
> >>> bin_log
> >>> Ну или какойнить патчик чтобы это делал, добивал строки пробелами
> >>> или
> >>> нулями до указанной длины например.
> >>> цифры в байтах, строки пробелами добивать, размеры сократятся лога
> >>> значительно, и читать проще, не загружая весь лог.
> >
> > IS> С чего это они сократяться, если все запросы, User-Agent'ы и
> > Referer'ы
> > IS> будут добивать до одинаковой длины ? Какой, кстати - 1K, 2K, 16K?
> >
> > Я образно, скажем чтобы считать траф мне нужно 3 параметра:
> > время, ip и $bytes_sent
> > В бинарном виде это 10 байт (если не ошибаюсь.) на 1 запись.
> >
> >>> Мне вот сейчас нужено посчитать траффик с определенного хоста и
> >>> сгрупировать по ip. А если мой лог весит 200мб+
> >>> Как его читать то? А читать его надо каждые 5 мин.
> >>> А бинарный просто, сами же понимаете...
> >
> > IS> И как это выглядит - не загружая весь лог ?
> >
> > Проблема в скорости, одно дело распарсить весь лог, другое вытащить
> > нужные значения не загружая строки из файла.
> > Я жаже не представляю, сколько времени парсить лог таким способом
> > размером скажем в 2 гига.
> >
> >>> Очень был бы рад, если в будующих версиях ченить подобное появится.
> >
> > IS> Бинарные форматы - это зло, растираживанное Майкрософтом.
> > IS> Для обработки бинарного формата нужно писать специальную
> > программу, заточенную
> > IS> под этот формат, тогда как для текстовых достаточно grep/awk/
> > perl/etc.
> >
> > Работаю с php, на нем как раз читать большие файлы быстро можно только
> > в таком виде как описал. А искать конец строки, разбивать строку по
> > параметрам это долго и накладно.
> > Куда проще перемещаться по длине строке и читать нужный параметр зная
> > где он и сколько их.
> >
> >
> > --
> > С уважением,
> > Евгений                          mailto:jeka at dvdrip.ru
> >
> >
>
>


-- 
wbr, Andrey


More information about the nginx-ru mailing list