Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.31;
Скачать: CL | DM;

Вниз

Запись в log   Найти похожие ветки 

 
rvi   (2009-03-03 12:15) [0]

Добрый день.
Есть два вопроса по методу записи лога программы, как идеологический, так и технический.

1) Способ через StrSaveToFile работает и все просто, но при больших объемах лога слишком расточителен с точки зрения расхода памяти и времени работы с диском.
Поэтому я решил перевести процедуру записи в лог на более низкий уровень, для чего использую процедуру FileWrite. Я считаю, что более правильно дописывать в конец файла, чем переписывать весь файл заного. Или я чего-то не понимаю и можно все оставить как есть?

2) Пример кода:
Procedure AddLog(S: string; LT: TLogType);
var
 LogName: string;
 f: hFile;
 p:PChar;
begin
 Case LT of
   ltError: LogName:="Error.log";
   ltNet: LogName:="Access.log";
 end;
 f:=FileCreate(LogName, ofOpenWrite or ofOpenAlways);
 FileSeek(f, 0, spEnd);
 FileWrite(f, s[1], length(s));
 FileClose(f);
end;


В результате некоторые записи дублируются в файле и порядок не соответствует хронологии. Я грешу на строчку позиционирования указателя на EOF -> FileSeek(f, 0, spEnd); Может кто сталкивался и подскажет где у меня ошибка?
Спасибо.


 
Jon ©   (2009-03-03 13:01) [1]

From KOL.PAS - works well:


procedure LogFileOutput( const filepath, str: AnsiString );
var
 F: THandle;
 Tmp: AnsiString;
begin
 F := FileCreate( filepath, ofOpenWrite or ofOpenAlways or ofShareDenyWrite );
 if F = INVALID_HANDLE_VALUE then Exit;
 FileSeek( F, 0, spEnd );
 Tmp := str + #13#10;
 FileWrite( F, PAnsiChar( Tmp )^, Length( Tmp ) );
 FileClose( F );
end;


 
rvi   (2009-03-03 14:14) [2]

Thank you, John, I will try



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

Текущий архив: 2011.07.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
15-1302588303
OW
2011-04-12 10:05
2011.07.31
Задача определения региона по номеру позвонившего


2-1303629199
iamempty
2011-04-24 11:13
2011.07.31
Выборка данных из определенного поля таблицы с помощью DBGrid


2-1303835617
Vasja123
2011-04-26 20:33
2011.07.31
Как сделать OnClick на Label если Enabled=false


15-1302638629
Kerk
2011-04-13 00:03
2011.07.31
"Первая орбита"


15-1302604376
БарЛог
2011-04-12 14:32
2011.07.31
Антиусилитель wi-fi сигнала