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

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

Работа с логами


Александр ©   (2002-06-11 17:19:00) 

Здравствуйте программисты! У меня есть вопрос по работе с файлами... Есть сервер Апаче, который ведет логи в файле 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; ошибки все в другой листбокс. Как мне это сделать?
Спасибо


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

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


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

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


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

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


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

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


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

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


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

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


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

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


Almaz   (2002-06-12 01:01:00) [8]


> Александр © (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;


Удачи.


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


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

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

Удачи.


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

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


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

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


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

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


Наверх

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