Debug logfile.

This code shows one way to save much things that's going on in your application in a log file.

Here are two files present, the project file and one unit that does the work...



{Unit1.pas}

unit Unit1;



interface



uses

  {$DEFINE DEBUG}

  {$IFDEF DEBUG} uLog, {$ENDIF}

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.Button1Click(Sender: TObject);

var

Bar: Integer;

begin

Bar := 100;

{$IFDEF DEBUG}

  Log(Format('Button1.Click; Bar = %d',[Bar]));

{$ENDIF}

end;



end.



//--------------------------------------------------------------------



{uLog.pas}

unit uLog;



interface



procedure Log(S: String);



implementation




uses

  Windows, SysUtils;



var

  LogFile: TextFile;

  LogCriticalSection: TRtlCriticalSection;



procedure Log(S: String);

var

  SystemTime: TSystemTime;

  FileTime: TFileTime;

begin

GetSystemTime(SystemTime);

SystemTimeToFileTime(SystemTime, FileTime);

EnterCriticalSection(LogCriticalSection);

WriteLn(LogFile, Format('%s %.8x%.8x %s',

  [FormatDateTime('yy.mm.dd hh.mm.ss', Now),

  FileTime.dwHighDateTime, FileTime.dwLowDateTime, S]));

LeaveCriticalSection(LogCriticalSection);

end;



procedure Startup;

var

  FileName: String;

begin

InitializeCriticalSection(LogCriticalSection);

FileName := Format('Log file for %s at %s.txt',

  [ParamStr(0), DateTimeToStr(Now)]);

while Pos(':', FileName) > 0 do FileName[Pos(':', FileName)] := '.';

while Pos('/', FileName) > 0 do FileName[Pos('/', FileName)] := '-';

while Pos('\', FileName) > 0 do FileName[Pos('\', FileName)] := '.';

AssignFile(LogFile, FileName);

Rewrite(LogFile);

end;



procedure Shutdown;

begin

CloseFile(LogFile);

DeleteCriticalSection(LogCriticalSection);

end;



initialization

Startup;

finalization

Shutdown;

end.

 

Share this article!

Follow us!

Find more helpful articles: