Главная страница
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.042 c
1-1116916439
Pavelkq
2005-05-24 10:33
2005.06.06
Переброска массивов


14-1116416994
alless
2005-05-18 15:49
2005.06.06
Файл .wma


1-1116575709
Lex_!
2005-05-20 11:55
2005.06.06
Запуск программы и ожидание ее завершения


14-1116215298
Crusider
2005-05-16 07:48
2005.06.06
Я тут вьювер картинок мультиформатный забацал можете потестить?


1-1116609134
ancot
2005-05-20 21:12
2005.06.06
Количество элементов Set свойства