Korrekte Protokollierung im Thread ohne Dialog mit Eurekalog

8

Ich habe ein Delphi 10-Projekt mit der neuesten Version von EurekaLog. Ich verwende derzeit EurekaLog, um Probleme bei meinen Produktions-Clients zu beheben.

Ich habe bemerkt, dass EurekaLog keine Fehler innerhalb von Threads registriert hat. Nachdem ich angefangen habe, es zu lesen, habe ich festgestellt, dass ich von TThread zu TThreadEx wechseln muss, und füge den folgenden Code am Anfang meiner Execute overriden Methode hinzu.

%Vor%

Trotzdem wird bei Auftreten eines Fehlers in der Datei EL kein Ereignis generiert.

Wenn ich ExceptionManager.StandardEurekaError('TThrdSincArquivos.Execute => ' + ex.Message); für try..except hinzufüge, loggt es sich. Aber die Stapelüberwachung wird angezeigt, als ob der Fehler in der Zeile aufgetreten ist, in der ich StandardEurekaLog() aufruft, und nicht in der Zeile, in der der Fehler tatsächlich aufgetreten ist. Dies vereitelt den Zweck der ganzen Sache.

Ein weiteres Problem ist, dass es ein Dialogfeld anzeigt, das ich nicht möchte, da der Fehler in einem Hintergrundthread aufgetreten ist. Ich möchte es nur protokolliert haben. Ich sollte einen Dialog nur mit Fehlern im Hauptthread bekommen.

Wie erreiche ich diese Ergebnisse innerhalb des Threads?

  • Protokollieren Sie den Fehler tatsächlich mit dem richtigen Stapel.

  • Zeigen Sie im Haupt-Thread den Dialog an, aber innerhalb eines Threads loggen Sie einfach ohne Dialog ein.

BEARBEITEN

Unten ist meine EurekaLog Muti-Threading-Konfiguration

Hier ist meine Thread-Deklaration:

%Vor%

Mein Thread ist Erstellen

%Vor%

Der Beginn meiner Ausführung

%Vor%

und das Ende des Execute

%Vor%

Er weigert sich, eine Ausnahme für die Elf-Datei zu protokollieren. Ich habe versucht, eine Erhöhung nach meiner eigenen Logroutine hinzuzufügen, aber es hat immer noch nicht geholfen. Es sollte protokollieren, aber es ist nicht, es sei denn ich explizit die StandardEurekaError , aber ich bekomme den Stapel falsch, und ich bekomme den Dialog.

    
Pascal 06.10.2017, 23:01
quelle

0 Antworten