Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.021 c
1-1116916439
Pavelkq
2005-05-24 10:33
2005.06.06
Переброска массивов


3-1115124652
saf287
2005-05-03 16:50
2005.06.06
Расширение isu и ds


1-1116582026
mnx
2005-05-20 13:40
2005.06.06
Косвенная команда


4-1113465065
axx
2005-04-14 11:51
2005.06.06
Помогите с hook ом клавиатуры.


14-1116587882
Zhekson
2005-05-20 15:18
2005.06.06
В чём смысл жизни????




   Наверх