Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.012 c
14-1116079521
Ihor Osov'yak
2005-05-14 18:05
2005.06.06
пару фоток


6-1111329542
Radgar
2005-03-20 17:39
2005.06.06
Disconnect в ServerSocket


14-1116636141
Максим О.
2005-05-21 04:42
2005.06.06
Помогите с Dephi 8


6-1111268616
Radgar
2005-03-20 00:43
2005.06.06
Проблема приема ReceiveText с несколькоми клиентами


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский