Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.20;
Скачать: CL | DM;

Вниз

Анализ и структуризация и накопление инфы из log-файлов.   Найти похожие ветки 

 
Filat ©   (2002-05-08 13:16) [0]

Есть лог файл прокси сервера, кто куда из юзверей бегал, как его правильно обработать?
Вот часть для примера.

2002-05-07 21:13:14 779 110.126.25.3 TCP_REFRESH_HIT/304 255 GET http://referat.ru/img/pl_n.gif - FIRST_UP_PARENT/proxy.cris.net image/gif
2002-05-07 21:13:14 503 110.126.25.3 TCP_REFRESH_HIT/304 255 GET http://referat.ru/img/p.gif - FIRST_UP_PARENT/proxy.cris.net image/gif

Длина строки может меняться.
Спасибо.


 
Alx2 ©   (2002-05-08 13:18) [1]

>как его правильно обработать?
Все зависит от конечной цели обработки.


 
Filat ©   (2002-05-08 13:36) [2]

Надо разделить по дате, времени, IP-адресу, сайтам и времени сколько был на сайте


 
Alx2 ©   (2002-05-08 13:40) [3]

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


 
Alx2 ©   (2002-05-08 13:42) [4]

А если интерес сиюминутный - можно в Excel подгрузить и там все выполнить.


 
Filat ©   (2002-05-08 13:51) [5]

Интерес постоянный, всерьёз и надолго, т.к. когда надо юзверя ставить на место то нужен период и + квартальные отчёты:((.
Вопрос в том, как это считать по кусочкам и файла в базу?


 
Alx2 ©   (2002-05-08 14:39) [6]

Сначала создаем базу. В ней таблицу с нужными полями (таблица просто должна отражать структуру log-файла, если нужно, через lookup связи). Потом лезем в лог, читаем построчно (через ReadLn, например), полученную строку дробим согласно полям (Дата, Время, IP ....)
и добавляем полученное в таблицу. Для того, чтобы в следующий раз не добавить то, что уже есть в таблице, можно из таблицы выудить дату/время последней записи и добавлять только более поздние).
Осталось делать SQL запросы, чтобы получить требуемое


 
Filat ©   (2002-05-08 15:08) [7]

- полученную строку дробим согласно полям (Дата, Время, IP ....) <- как это можно сделать?


 
AndrewC   (2002-05-08 15:40) [8]

Привет Filat. Я как раз завершаю работу над подобным проектом.
Строка дробится процедуркой на T-SQL на слова. Структура лога, т.е. положение так сказать исходных данных в логе заранее изветна и как правило подается какому-то закону. Т.е. правилам, например в твоем случае первое поле в получателе дататайм в исходном файле состоит всегда из двух первых слов, и т.д.
Эту логику занес в таблицу с двумя полями: 1 - номер слова в исходном файле, 2 - номер поля в таблице получателе. Для 2-х или более слов которые должны попасть в одно поле номер во втором поле одинаков. Процедура получившая разобраные слова заносит в таблицу получатель данные согласно правилам. Усе на T-SQL. Если надо могу кинуть исходник для дробления на слова.


 
Filat ©   (2002-05-08 16:56) [9]

AndrewC - Брось, если не трудно.
Но вопрос: На сколько я знаю, T-SQL используется в MS SQL. А как на delphi с ним тогда мутить? Но впрочем посмотрю исходник, может станет ясно.
P.S. Если будут вопросы тебе можно будет на мыло написать?


 
AndrewC   (2002-05-08 17:36) [10]

Поехало мылом.


 
Anatoly Podgoretsky ©   (2002-05-08 20:00) [11]

CommsText и никакой парсинг строки не требуется, если конечно формат именно такой жесткий. После этого
строка 0 - 2002-05-07
строка 1 - 21:13:14

строка 2 - 779
строка 3 - 110.126.25.3
строка 4 - TCP_REFRESH_HIT/304
строка 5 - 255
строка 6 - GET
строка 7 - http://referat.ru/img/pl_n.gif
строка 8 - -
строка 9 - FIRST_UP_PARENT/proxy.cris.net
строка 10 - image/gif

Жирным нужные тебе строки, Курсивом одна из них размер, оставшие можно игнорировать



Страницы: 1 вся ветка

Текущий архив: 2002.05.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
3-64541
Uncle SAM
2002-04-16 02:31
2002.05.20
DELPHI and CREATE PROCEDURE SQL COMMAND


1-64692
SeF
2002-05-04 13:44
2002.05.20
относительный путь


3-64490
Vint
2002-04-22 23:43
2002.05.20
ODBC


3-64494
Nina
2002-04-22 14:44
2002.05.20
Каскадное удаление для Query!


1-64695
Explorer
2002-05-06 10:47
2002.05.20
Как PReport передать свою переменную?