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

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

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


Страницы:   1 2 3 4

123-ий ©   (2008-06-25 11:36:00) 

Как лучше организовать сабж? В том смысле, какими методами его лучше читать и писАть в него каку-либо инфу?


123-ий   (2008-06-26 10:50:00) [41]


> Ega23 ©   (25.06.08 11:39) [2]
а чтение лога? у тебя ж только запись... или ты чтение вообще не делал
?


123-ий   (2008-06-26 07:54:00) [42]


> Игорь Шевченко ©   (25.06.08 13:29) [22]

а что так невесело?


Игорь Шевченко   (2008-06-25 13:29:00) [43]


> Эй! Ты смотри, это всего только заготовка...  :) Её ещё
> тщательно "напильником" обрабатывать надо...  :)


точнее выкинуть


stas   (2008-06-25 13:22:00) [44]

Ega23 ©   (25.06.08 12:24) [15]
возникала такая ошибка когда я вyenhb функции LogWrite, открывал потом закрывал файл, когда сделал f глобальной переменной и открываю файл один раз, эти проблемы ушли.


stas   (2008-06-25 13:01:00) [45]

Ega23 ©   (25.06.08 12:24) [15]
пишут, ошибка не возникает. O_O.
Ок, попытаюсь разобраться.


Loginov Dmitry   (2008-06-25 12:59:00) [46]


> Как лучше организовать сабж? В том смысле, какими методами
> его лучше читать и писАть в него каку-либо инфу?


Пример надежнойзаписи в лог здесь:
http://matrix.kladovka.net.ru/download.php?getfilename=uploads/other/ldslogger.zip


123-ий   (2008-06-25 12:54:00) [47]

Панятно. будем разбираться :)


Ega23   (2008-06-25 12:38:00) [48]


> У тебя получилась хорошая защита от копипастинга.


Не, можно конечно брать и пользоваться, но я это дело "под себя" точил. Тебе может всего и не нужно совсем.


123-ий   (2008-06-25 12:35:00) [49]


> Ega23 ©   (25.06.08 12:01) [9]

Ну вот. У тебя получилась хорошая защита от копипастинга. Конечно я постараюсь разобраться в смысле кода, а потом уже и напильником и шкуркой. По любому рахмет, ой это ж по казахски... спасибо :)


Ega23   (2008-06-25 12:24:00) [50]


> А это для чего.


Ну как же. 2 потока разом пытаются в файл что-то записать...


stas   (2008-06-25 12:19:00) [51]

Ega23 ©   (25.06.08 12:12) [13]

Не слышал. А это для чего.

Пока у меня не возникало никаких проблем слогом сервер работает в течении года.
Но если это чему-то поможет буду благодарен.


Ega23   (2008-06-25 12:12:00) [52]

EnterCriticalSection
try
 try
   ....
   WriteLog
 except
   ....
 end;
finally
 LeaveCriticalSection
end;


stas   (2008-06-25 12:07:00) [53]

Ega23 ©   (25.06.08 12:05) [11]
тогда что вы имеете ввиду?


Ega23   (2008-06-25 12:05:00) [54]


> try except ?


На сколько я понимаю, для реально многопоточного лога этого недостаточно...


stas   (2008-06-25 12:03:00) [55]

Ega23 ©   (25.06.08 12:00) [8]
try except ?


Ega23   (2008-06-25 12:01:00) [56]


> варианты Ega32


Эй! Ты смотри, это всего только заготовка...  :) Её ещё тщательно "напильником" обрабатывать надо...  :)


Ega23   (2008-06-25 12:00:00) [57]


> работает на многопоточном сервере,


А где критическая секция?


123-ий   (2008-06-25 11:59:00) [58]

ну вот попробую варианты Ega32 и stas. Может чего и выйдет умного...


stas   (2008-06-25 11:58:00) [59]

У меня такой работает на многопоточном сервере, еще не разу не глючил.
Только при запуске проги делаем CreateLogFile, по завершении CloseFile
лог пишем WriteLog

unit LogWriter;

interface
uses sysutils;
Procedure OpenFile (FileName:String);
Procedure CloseFile;
Procedure WriteText (Text:String);
Procedure CreateLogFile;
Procedure WriteLog (Text:String);
//Procedure SetWritedLog (Writed:Boolean);

Var F:TextFile; WritedLog:Boolean=True;

implementation

Procedure OpenFile (FileName:String);
begin
//  if not writedLog then exit;
 Assign (F,FileName);
 if FileExists (FileNAme) then
 Reset (F); {else} Rewrite (f);
end;

Procedure CloseFile;
begin
 Close (F);
end;

Procedure WriteText (Text:String);
begin
 if writedLog then
 Writeln (F,Text);
end;

Procedure CreateLogFile;
Var fp,FName,fn:String; I:Integer;
begin
  fp:=ExtractFilePath(ParamStr(0))+'logs\';
  if not DirectoryExists (fp) then MkDir (fp);
  FName:=fp+'gsLog_'+FormatDateTime ('ddmmyyyy',now);
  i:=0;
  fn:= FName;
  While FileExists (FName) do
  begin
   FName:=FN+IntToStr(i);
   inc(i);
  end;
  OpenFile (FName);
end;

Procedure WriteLog (Text:String);
Var S:String;
begin
S:=FormatDateTime ('ddmmyyyy hh:mm:ss',now)+': '+Text;
try
WriteText(S);
except
end;
end;

end.


123-ий   (2008-06-25 11:49:00) [60]


> clickmaker ©   (25.06.08 11:39) [3]

постоянный монитор не нужен. ускорение тоже, ибо лог... ну у меня не совсем лог, скорее история работы с клиентом, там вряд ли будет дофига инфы.


Страницы:   1 2 3 4

Наверх

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