Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизАнализ и структуризация и накопление инфы из 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c