![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с логами
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]
постоянный монитор не нужен. ускорение тоже, ибо лог... ну у меня не совсем лог, скорее история работы с клиентом, там вряд ли будет дофига инфы.