|
|
@@ -10,10 +10,14 @@ Uses
|
|
|
System.Classes,
|
|
|
System.TypInfo;
|
|
|
|
|
|
-const
|
|
|
- UseAppendMode = False;
|
|
|
- // (true) Append mode: Single-file mode. The file is opened only when writing.
|
|
|
- // (false) Normal mode: The file is open all the time
|
|
|
+
|
|
|
+ {$define bUseAppendMode}
|
|
|
+ // (defined) Append mode: Single-file mode. The file is opened only when writing.
|
|
|
+ // (not defined) Normal mode: The file is open all the time
|
|
|
+ {$ifdef bUseAppendMode}
|
|
|
+ {$define bAppendMultiThreaded} //If define - file to each thread in append mode
|
|
|
+ {$endif bUseAppendMode}
|
|
|
+
|
|
|
var
|
|
|
WriteTimeToLog :Boolean = True;
|
|
|
WriteMillisecondsToLog :Boolean = False;
|
|
|
@@ -34,8 +38,10 @@ var
|
|
|
fStopWatch : TStopwatch;
|
|
|
fLogFile : TextFile;
|
|
|
fLogOpened : Boolean;
|
|
|
- fFileBuf : array[1..4096] of Char;
|
|
|
fLogFileName : string;
|
|
|
+ {$ifndef bUseAppendMode}
|
|
|
+ fFileBuf : array[1..4096] of Char;
|
|
|
+ {$endif bUseAppendMode}
|
|
|
|
|
|
procedure AddStr(var aStr :String; const aAddStr :String); inline;
|
|
|
begin
|
|
|
@@ -67,9 +73,14 @@ begin
|
|
|
fInLog.Acquire;
|
|
|
try
|
|
|
try
|
|
|
- if UseAppendMode then begin // Append mode
|
|
|
- AssignFile(fLogFile, fLogFileName);
|
|
|
- if FileExists(fLogFileName) then
|
|
|
+ {$ifdef bUseAppendMode}
|
|
|
+ {$ifdef bAppendMultiThreaded}
|
|
|
+ var vLogFileName := fLogFileName + '_'+ TThread.CurrentThread.ToString + '_' + UIntToStr(TThread.CurrentThread.ThreadID)+'.log';
|
|
|
+ {$else bAppendMultiThreaded}
|
|
|
+ var vLogFileName := fLogFileName;
|
|
|
+ {$endif bAppendMultiThreaded}
|
|
|
+ AssignFile(fLogFile, vLogFileName);
|
|
|
+ if FileExists(vLogFileName) then
|
|
|
Append(fLogFile)
|
|
|
else
|
|
|
Rewrite(fLogFile);
|
|
|
@@ -78,10 +89,10 @@ begin
|
|
|
finally
|
|
|
CloseFile(fLogFile);
|
|
|
end;
|
|
|
- end else begin // Normal mode
|
|
|
+ {$else bUseAppendMode}
|
|
|
Writeln(fLogFile, vFullStr);
|
|
|
Flush(fLogFile);
|
|
|
- end;
|
|
|
+ {$endif bUseAppendMode}
|
|
|
except
|
|
|
// Ignoring all exceptions
|
|
|
end;{try}
|
|
|
@@ -166,9 +177,13 @@ begin
|
|
|
var vTmpPath := TPath.GetTempPath + PathDelim + 'MyLog';
|
|
|
CreateDir(vTmpPath);
|
|
|
AddStr(vTmpPath, PathDelim + ExtractFileName(GetModuleName(HInstance)));
|
|
|
- if UseAppendMode then
|
|
|
- fLogFileName := vTmpPath + '.log'
|
|
|
- else begin
|
|
|
+ {$ifdef bUseAppendMode}
|
|
|
+ {$ifdef bAppendMultiThreaded}
|
|
|
+ fLogFileName := vTmpPath;
|
|
|
+ {$else bAppendMultiThreaded}
|
|
|
+ fLogFileName := vTmpPath + '.log';
|
|
|
+ {$endif bAppendMultiThreaded}
|
|
|
+ {$else bUseAppendMode}
|
|
|
var vInd := 0;
|
|
|
repeat
|
|
|
fLogFileName := vTmpPath + '.' + IntToStr(vInd) + '.log';
|
|
|
@@ -177,7 +192,7 @@ begin
|
|
|
AssignFile(fLogFile, fLogFileName);
|
|
|
System.SetTextBuf(fLogFile, fFileBuf);
|
|
|
ReWrite(fLogFile);
|
|
|
- end;
|
|
|
+ {$endif bUseAppendMode}
|
|
|
fInLog := TCriticalSection.Create;
|
|
|
except
|
|
|
fLogOpened := False;
|
|
|
@@ -202,8 +217,9 @@ begin
|
|
|
try
|
|
|
if fLogOpened then begin
|
|
|
fLogOpened := False;
|
|
|
- if not UseAppendMode then
|
|
|
- CloseFile(fLogFile);
|
|
|
+ {$ifndef bUseAppendMode}
|
|
|
+ CloseFile(fLogFile);
|
|
|
+ {$endif bUseAppendMode}
|
|
|
fInLog.Free;
|
|
|
end;
|
|
|
except
|