![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Анализ и структуризация и накопление инфы из 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]>как его правильно обработать?
Все зависит от конечной цели обработки.