Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.006 c
1-64652
zx
2002-05-08 13:44
2002.05.20
TempDir


1-64665
drt
2002-05-05 18:35
2002.05.20
Help!


1-64722
Vinivor
2002-05-05 13:41
2002.05.20
Как создать массив кнопок?


6-64759
BDRON
2002-03-07 08:52
2002.05.20
Dial-up программа


1-64569
Timon
2002-05-06 16:54
2002.05.20
TFileStream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский