{
      Подключение этого модуля включает поддержку записи в текстовый файл
}
unit dlog_txt;

interface

uses
  dlog;

procedure SetLogTxtFilename(const FileName: AnsiString);
procedure LogToTxt(Entry: PLogEntry);

implementation

var
  LogTxtFilename: AnsiString = '';
  F: TextFile;
  AllowTxt: Boolean = False;

procedure SetLogTxtFilename(const FileName: AnsiString);
begin
  if AllowTxt then begin
    {$I-}
    Close(F);
    {$I+}
  end;
  LogTxtFilename := FileName;
  AllowTxt := LogTxtFilename <> '';
  if AllowTxt then begin
    Assign(F, LogTxtFilename);
    {$I-}
    Rewrite(F);
    {$I+}
    if IOResult <> 0 then
      AllowTxt := False;
  end;
end;

procedure LogToTxt(Entry: PLogEntry);
begin
  if AllowTxt then begin
    Writeln(F, Entry^.BuildString);
  end;
end;

initialization
  AddLogFunc(@LogToTxt);
finalization
  if AllowTxt then begin
    {$I-}
    Close(F);
    {$I+}
  end;
end.
