2 Commits be59b97894 ... 10af43f593

Author SHA1 Message Date
  Yuri Tolsky 10af43f593 Merge branch 'master' of https://gogs.kv188.ru/ytolsky/MyLog 2 months ago
  Yuri Tolsky 9cd3b59e3d Append mode 2 months ago
1 changed files with 32 additions and 13 deletions
  1. 32 13
      MyLog.pas

+ 32 - 13
MyLog.pas

@@ -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