var
  ListInfo: TStrings;

procedure WriteLog(Msg: String; xShowMsg: boolean = FALSE);
begin
  WriteLogFile(FileLog, Msg);
end; {End WriteLog}

procedure WriteInfo(Msg: String; xShowMsg: boolean = FALSE);
begin
  if ListInfo.IndexOf(MD5String(Msg)) < 0 then
  begin
    ListInfo.Add(MD5String(Msg));
    WriteLogFile(FileInfo, Msg);
  end;
  WriteLog(Msg);
end; {End WriteInfo}


{~ExceptionLog
  логирование сообщения xMsg и исключения (LastException)
  с трансляцией исключения дальше: raise(xExceptionMessage).}
procedure ExceptionLog( xMsg: string);
begin
  vLogException := TRUE;
  RaiseLog( xMsg, LastException.Message);
end;

{~RaiseLog
 логирование сообщения xMsg с созданием исключения: raise(xExceptionMessage).}
procedure RaiseLog( xMsg, xExceptionMessage: string);
begin
  WriteInfo( 'СБОЙ: ' + xMsg + ' (' + xExceptionMessage + ')');
//  ShowMessage( xMsg +#13#10 + xExceptionMessage);
  raise( xMsg +#13#10 + xExceptionMessage);
end;


begin
end.