|
|
@@ -2,7 +2,8 @@
|
|
|
unit MyLog;
|
|
|
{*******************************} interface {**********************************}
|
|
|
var
|
|
|
- WriteTimeToLog :Boolean = False;
|
|
|
+ UseAppendMode :Boolean = true;//One file mode. OLog file opened only in writing.
|
|
|
+ WriteTimeToLog :Boolean = true;
|
|
|
WriteMillisecondsToLog :Boolean = False;
|
|
|
LogElementsSeparator :String = ' ';
|
|
|
Procedure WriteMyLog(const aStr :String);
|
|
|
@@ -23,6 +24,7 @@ var
|
|
|
fLogFile : TextFile;
|
|
|
fLogOpened : Boolean;
|
|
|
fFileBuf : array[1..4096] of Char;
|
|
|
+ fLogFileName : string;
|
|
|
|
|
|
procedure AddStr(var aStr :String;const aAddStr :String);inline;
|
|
|
begin
|
|
|
@@ -49,8 +51,21 @@ begin
|
|
|
fInLog.Acquire;
|
|
|
try
|
|
|
try
|
|
|
- Writeln(fLogFile, vFullStr);
|
|
|
- Flush(fLogFile);
|
|
|
+ if UseAppendMode then begin
|
|
|
+ AssignFile(fLogFile, fLogFileName);
|
|
|
+ if FileExists(fLogFileName) then
|
|
|
+ Append(fLogFile)
|
|
|
+ else
|
|
|
+ Rewrite(fLogFile);
|
|
|
+ try
|
|
|
+ Writeln(fLogFile, vFullStr);
|
|
|
+ finally
|
|
|
+ CloseFile(fLogFile);
|
|
|
+ end;
|
|
|
+ end else begin
|
|
|
+ Writeln(fLogFile, vFullStr);
|
|
|
+ Flush(fLogFile);
|
|
|
+ end;
|
|
|
except
|
|
|
//Ignoring all exceptions
|
|
|
end;{try}
|
|
|
@@ -133,15 +148,18 @@ begin
|
|
|
var vTmpPath := TPath.GetTempPath + PathDelim + 'MyLog';
|
|
|
CreateDir(vTmpPath);
|
|
|
AddStr(vTmpPath, PathDelim + ExtractFileName(ParamStr(0)));
|
|
|
- var vLogFileName :String;
|
|
|
- var vInd := 0;
|
|
|
- repeat
|
|
|
- vLogFileName := vTmpPath + '.' + IntToStr(vInd) + '.log';
|
|
|
- inc(vInd);
|
|
|
- until not FileExists(vLogFileName);
|
|
|
- AssignFile(fLogFile, vLogFileName);
|
|
|
- System.SetTextBuf(fLogFile, fFileBuf);
|
|
|
- ReWrite(fLogFile);
|
|
|
+ if UseAppendMode then
|
|
|
+ fLogFileName := vTmpPath + '.log'
|
|
|
+ else begin
|
|
|
+ var vInd := 0;
|
|
|
+ repeat
|
|
|
+ fLogFileName := vTmpPath + '.' + IntToStr(vInd) + '.log';
|
|
|
+ inc(vInd);
|
|
|
+ until not FileExists(fLogFileName);
|
|
|
+ AssignFile(fLogFile, fLogFileName);
|
|
|
+ System.SetTextBuf(fLogFile, fFileBuf);
|
|
|
+ ReWrite(fLogFile);
|
|
|
+ end;
|
|
|
fInLog := TCriticalSection.Create;
|
|
|
except
|
|
|
fLogOpened := False;
|
|
|
@@ -166,7 +184,8 @@ begin
|
|
|
try
|
|
|
if fLogOpened then begin
|
|
|
fLogOpened := False;
|
|
|
- CloseFile(fLogFile);
|
|
|
+ if not UseAppendMode then
|
|
|
+ CloseFile(fLogFile);
|
|
|
fInLog.Free;
|
|
|
end;
|
|
|
except
|