Programdaki Hataları Loglama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
FXERKAN
Üye
Mesajlar: 178
Kayıt: 26 Tem 2003 11:06
Konum: Sivas - Konya
İletişim:

Programdaki Hataları Loglama

Mesaj gönderen FXERKAN »

merhaba, arkadaşlar yapmakta olduğum bir program için oluşan hataları bir log dosyasına tarih,hatanın olduğu form, bileşen adı ve hata mesajını yazıyorum. kullandığım kod şu şekilde



sormak istediğim acaba bu log dosyasına bu hatayı oluşturan işlemide yazabilirmiyim. mesela kullanıcı mouse ile Button2'ye tıkladıda yada gridder şu işlemi yapıyorduda hata oluştu gibi bir bilgi edinebilirmiyim. yani hata nasıl meydana geldi?

Kod: Tümünü seç

procedure TAnaForm.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
var
  ErrorLogFileName: string;
  ErrorFile: TextFile;
  ErrorData: string;
begin
  ErrorLogFileName := ExtractFilePath(Application.ExeName) + '\FXLogs.log';
  AssignFile(ErrorFile, ErrorLogFileName);

  if FileExists(ErrorLogFileName) then
    Append(ErrorFile)
  else
    Rewrite(ErrorFile);

  try
    if ActiveMDIChild.Caption <> '' then
      ErrorData := Format('%s |%s |%s |%s', [DateTimeToStr(Now), ActiveMDIChild.Caption, Sender.ClassName, E.Message])
    else
      ErrorData := Format('%s |%s |%s |%s', [DateTimeToStr(Now), 'ANAFORM', Sender.ClassName, E.Message]);
    WriteLn(ErrorFile, ErrorData);
  finally
    CloseFile(ErrorFile)
  end;

  //ShowMessage('YAKALANAN HATA' + #13 + #10 + E.Message);
  Application.ShowException(E);
end;
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Mesaj gönderen warder »

Sizin kodunuza aşağıdaki satırı ek yaparak bir deneyin.
E.ClassName
hata yakalama işlemlerinde farklı bir derya ile karşılaşacağınızı sanıyorum.
O kadar çoklar ki. Her birini ayrı ayrı işleyerek çok sonuçlar çıkartılabilir.
Gerçi sizin sorduğunuz bu değildi ama ilginizi çekeceğinden eminim.
Sizin aradığınızı Sender parametresinin özelliklerinde bulacağınızı sanıyorum.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

sizin sorduğunuz kadar detaylı bir logging bilmiyorum ama JVCL içinde bu işler için hazırlanmış bir kütüphane mevcut. JVCL Debug info ile derlediğinizde size hatanın hangi hangi unit içinde hangi satırda olduğunu gösteren bir kutu çıkıyor, incelemenizde fayda var
Cevapla