Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Вниз

Работа с логами   Найти похожие ветки 

 
Александр   (2002-06-11 17:19) [0]

Здравствуйте программисты! У меня есть вопрос по работе с файлами... Есть сервер Апаче, который ведет логи в файле 1.log. Структура файла такая:
[День недели Месяц число время год] [что это] [client его ip] и само замечание или сообщение
Пример:
[Fri May 10 19:12:36 2002] [error] [client 192.168.33.105] File does not exist: c:/www/home/localhost/www/chat.htm
И так тысячи или даже миллионы строк. Мне надо написаь программу, которая вытаскивала всю информацию из эого файла, например все ip, кроме моего, записывала в ListBox1; ошибки все в другой листбокс. Как мне это сделать?
Спасибо


 
Song   (2002-06-11 17:23) [1]

Ну дак очевидно что считывать из файла - WriteLn() и анализировать - Pos()


 
Александр   (2002-06-11 17:25) [2]

А можно поподробнее пожалуйста.


 
Song   (2002-06-11 18:21) [3]

AssignFile() .. WriteLn() .. CloseFile()
По первой процедуре смотрите хэлп, там пример есть.


 
Almaz   (2002-06-12 00:37) [4]


> Song © (11.06.02 18:21)
> Ну дак очевидно что считывать из файла - WriteLn()

Уважаемый, ВЫ ЧТО ? Так он все логи сотрет - не WriteLn а ReadLn.

Удачи.


 
Almaz   (2002-06-12 01:01) [5]


> Александр © (11.06.02 17:25)

Ну вот набросал кое-что вроде работает :)) По крайней мере с идеей разберетесь:

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
S, strData, strIP, strEvent, strMessage: String;
First, Last: Integer;
begin
AssignFile(F, "C:\1.log");
Reset(F);
while not EOF(F) do
begin
ReadLn(F, S);
First := Pos("[", S);
Last := Pos("]", S);
strData := Copy(S, First + 1, Last - First - 1); // Дата
S := Copy(S, Last + 1, Length(S));
ListBox1.Items.Add(strData);

First := Pos("[", S);
Last := Pos("]", S);
strEvent := Copy(S, First + 1, Last - First - 1); // Что это
S := Copy(S, Last + 1, Length(S));
ListBox2.Items.Add(strEvent);

First := Pos("client", S);
Last := Pos("]", S);
strIP := Copy(S, First + 7, Last - First - 7); // IP адрес
S := Copy(S, Last + 1, Length(S));
ListBox3.Items.Add(strIP);

strMessage := Trim(S); // Текст сообщения
ListBox4.Items.Add(strMessage);
end;
CloseFile(F);
end;


Удачи.


 
Song   (2002-06-12 10:13) [6]

Sorry...
Almaz, Вы - максималист :))


 
Александр   (2002-06-12 15:27) [7]

Спасибо Вам всем! Сделал почти..теперь делаю приятный интерфейс:)
А по поводу ВритеЛн и реадЛн эт сразу понял:)


 
Smok_er   (2002-06-12 15:33) [8]

Интересно, а не быстрее бы в данном случае была бы обработка, если бы использовать стринглист и к строкам обращаться по индексу?
Дело в том, что у меня аналогичная проблема решена так.
Переделывать и экспериментировать нет времени, может кто-нибудь уже пробовал эти 2 варианта и определил более быстрый?


 
Anatoly Podgoretsky   (2002-06-12 20:16) [9]

Зависат от размера


 
Smok_er   (2002-06-12 23:58) [10]

ну 4-10 метров например


 
Anatoly Podgoretsky   (2002-06-13 00:16) [11]

Не я не про такие маленькие размеры, что нибудь более 500 мб, ддя длгов апче это не редкость. В вопросе ничего не указано про ОС и соответсвенно про ограничитель строк, если речь идет о Линуксе, то ReadLn не очень подходит


 
Александр   (2002-06-13 20:21) [12]

Речь идет в общем то о Windows 2000 на системе NTFSб так что как линус грубо (очень) говоря.



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

Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
6-77530
dth
2002-04-17 16:27
2002.06.24
После NMFTP.Disconnect не закрывается приложение


4-77696
Jek_218
2002-04-27 15:53
2002.06.24
Вопрос тупой, но как найти дочернее окно по заголовку?


1-77385
Dark Elf
2002-06-10 19:39
2002.06.24
Перевод чисел


14-77562
kl_
2002-05-20 02:25
2002.06.24
Почему я выбрал Delphi?


3-77280
PSA
2002-05-30 14:19
2002.06.24
Проблема редактирования записей при подключении базы через ADO .





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский