Logfile is cleared when restart the app

Issue #316 resolved
Christophe Ravaut created an issue

I have tried TLogFileAppender and noticed that between app restarts the logfile is cleared and did not notice any property / method that would change this behaviour.

Comments (3)

  1. Christophe Ravaut reporter

    I must use TStreamLogAppender and set the position of the TFileStream to the size.

    procedure TForm1.FormCreate(Sender: TObject);
    var
      s: TFileStream;
      oAppender: TFileLogAppender;
    
    begin
    
      s := TFileStream.Create('U:\Development\Projects\Testing\Test_logging\Win32\Debug\Logger.txt', fmOpenReadWrite or fmShareDenyNone);
      s.Position := s.Size;
    
      fAppender := TStreamLogAppender.Create(s);
    
      fController := TLoggerController.Create();
      fController.AddAppender(fAppender);
      fLogger := TLogger.Create(fController);
    
    end;
    
  2. Stefan Glienke repo owner

    I would suggest using:

    System.IOUtils.TFile.Open(path, TFileMode.fmAppend, TFileAccess.faReadWrite, TFileShare.fsReadWrite);
    

    That handles everything perfectly - yours would now fail when the file does not exist yet. And it automatically sets the position to the end.

  3. Christophe Ravaut reporter

    I was catching the problem with FileExist but your suggestion is the best. And I've learn something again. Nice.

  4. Log in to comment