Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Анализ и структуризация и накопление инфы из log-файлов. [D5, D6, Win95/98, NT4, Win2k]


Filat ©   (2002-05-08 13:16:00) 

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

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

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


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

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

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


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

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


Filat   (2002-05-08 16:56:00) [3]

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


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

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


Filat   (2002-05-08 15:08:00) [5]

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


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

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


Filat   (2002-05-08 13:51:00) [7]

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


Alx2   (2002-05-08 13:42:00) [8]

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


Alx2   (2002-05-08 13:40:00) [9]

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


Filat   (2002-05-08 13:36:00) [10]

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


Alx2   (2002-05-08 13:18:00) [11]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо