Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

Exception   Найти похожие ветки 

 
SteppesSon ©   (2005-05-20 09:17) [0]

Возникла необходимость ведения лога ошибок в файл. В лог хотелось добавить хотя-бы ИмяКомпонентаВызвавшегоОшибку и МетодВызвавшийОшибку. Пробовал сам, но добился лишь имя формы, а не компонента, вызвавшего ошибку. заранее спасибо.


 
Slym ©   (2005-05-20 11:01) [1]

unit ErrorLogUn;

interface
uses sysutils,Forms,windows,Classes;
type
 TErrorLogger=class
 private
   FFileName:string;
 public
   constructor Create;
   procedure DoLogException(const Sender: string; E: Exception);
   procedure OnException(Sender: TObject; E: Exception);
   procedure Exception(Sender: TObject; E: Exception);
 end;

var ErrorLogger:TErrorLogger;
implementation

{ TErrorLogger }

constructor TErrorLogger.Create;
begin
 FFileName:=ExtractFilePath(ParamStr(0))+"Error.log";
end;

procedure TErrorLogger.DoLogException(const Sender: string; E: Exception);
var hFile:Text;
begin
 AssignFile(hFile,FFileName);
 {$i-}
 if FileExists(FFileName) then
   Append(hFile)
 else
   Rewrite(hFile);
 {$i+}
 if IOResult<>0 then Exit;
 Writeln(hFile,DateTimeToStr(Now),"> Sender: "",Sender,"", exception: "",E.ClassName,"", message: "",E.Message,""");
 CloseFile(hFile);
end;

procedure TErrorLogger.Exception(Sender: TObject; E: Exception);
begin
 if Sender is TComponent then
   DoLogException(TComponent(Sender).Name+"("+Sender.ClassName+")",E)
 else
   DoLogException(Sender.ClassName,E)
end;

procedure TErrorLogger.OnException(Sender: TObject; E: Exception);
begin
 Exception(Sender, E);
 if not Application.Terminated then
 begin
   if Application.MessageBox(PChar(E.Message+#13#10"&#199;&#224;&#226;&#229;&#240;&#248;&#232;&#242;&#252; &#239;&#240;&#232;&#235;&#238;&#230;&#229;&#237;&#232;&#229;?"),PChar(Application.Title+": &#212;&#224;&#242;&#224;&#235;&#252;&#237;&#224;&#255; &#238;&#248;&#232;&#225;&#234;&#224;!"),MB_YESNO or MB_ICONERROR)= ID_YES then
     Application.Terminate;
 end else Halt(1);
end;

initialization
 if not assigned(ErrorLogger) then
   ErrorLogger:=TErrorLogger.Create;
 Application.OnException:=ErrorLogger.OnException;

finalization
 if assigned(ErrorLogger) then
   ErrorLogger.Free;

end.



Страницы: 1 вся ветка

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
3-1114095844
malamba
2005-04-21 19:04
2005.06.06
Не подключается к базе на Windows 98


14-1116744901
DARKir
2005-05-22 10:55
2005.06.06
Установка компонентов


4-1113303401
Stalker01
2005-04-12 14:56
2005.06.06
Скрыть папку


3-1114500228
Max Zyuzin
2005-04-26 11:23
2005.06.06
Отображение строк в DBGrdi


14-1116576951
Николай
2005-05-20 12:15
2005.06.06
Создание системы справки