![]() |
[Unit] Errorlog
Liste der Anhänge anzeigen (Anzahl: 1)
Mit der Unit ErrorLog ist es ganz einfach möglich, einen Errorlog für ein eigenes Programm zu erstellen, indem alle Fehler, die in der Anwendung auftreten, geloggt werden. Man muss die Unit unter uses eintragen und sich ganze 3 Befehle merken:
Delphi-Quellcode:
Wie der Name schon sagt dient dieser Befehl zum starten des Protokollierens. Es wird eine Datei namens FileName angelegt, in der der Log gespeichert wird. Existiert die Datei bereits, wird die Liste zuvor noch geladen. Tritt kein Fehler auf, wird die Datei nicht erstellt.
ErrorLog.Start(FileName);
Befehl No. 2 (ihr habt es euch bestimmt schon gedacht :wink: ):
Delphi-Quellcode:
Stoppt die Auflistung der Fehler bis wieder Start aufgerufen wird. Wird Start mit einem leeren String als Parameter aufgerufen, wird der FileName nicht erneuert, was nützlich zur Wiederaufnahme des Protokolls ist.
ErrorLog.Stop;
3. Befehl:
Delphi-Quellcode:
Mit diesem Befehl ist es nun möglich, eigene Nachrichten zu loggen. Unter Flag trägt man quasi die Überschrift der Nachricht ein (z.B. "Info" oder "Warnung"). Msg ist dann die Nachricht, die geloggt wird.
ErrorLog.Write(Flag, Msg);
Anwendung:
Delphi-Quellcode:
ergibt zum Beispiel:
ErrorLog.Write('Info', 'Objekt XYZ wurde erstellt');
Code:
Zusätzlich zu jeder Nachricht (eigene und automatisch geloggte) wird also das aktuelle Datum sowie die Uhrzeit gespeichert.
[24.10.2008 / 17:01:42] [Info] Objekt XYZ wurde erstellt
Vielleicht kann ja jemand die Unit gebrauchen. Mfg |
Re: [Unit] Errorlog
Hi,
klingt ganz gut. Was loggt die Lob Unit denn Alles? |
Re: [Unit] Errorlog
Hat sich erledigt, habs verstanden :-D
|
Re: [Unit] Errorlog
Hallo Robert,
ich finde es etwas unpassend, dass du bei jeder Exception die gesamte Datei neu schreibst. Mit den alten Pascal-Routinen geht das viel besser: Einfach mit Writeln anfügen und dann Flush aufrufen. Eine interessante Ergänzung wäre es, wenn du noch die Möglichkeit bötest, über einen Hook auf HandleOnException und HandleAnyException alle Exceptions zu loggen, also auch die, die bereits durch einen inneren Try-Except-Block abgefangen werden. Außerdem solltest du auch eine Methode veröffentlicht, die es dem Entwickler ermöglicht, eigene Nachrichten zu loggen. |
Re: [Unit] Errorlog
Zitat:
Zitat:
Zitat:
Auf jeden Fall schonmal Danke für die Anregungen |
Re: [Unit] Errorlog
Beliebige Nachrichten. Auch Erfolgsmeldungen kann man loggen. Falls der Entwickler dein Log erweitern will, sollte er dies tun dürfen.
|
Re: [Unit] Errorlog
Zitat:
(Optionale) Flags für Info, Error und Debug. |
Re: [Unit] Errorlog
Ja, vor allem ein Flag für Debug wäre super praktisch. :)
|
Re: [Unit] Errorlog
Nachdem dieser Thread völlig in Vergessenheit geraten ist, habe ich ihn eben wieder entdeckt und dachte mir, ich könnte doch mal die Verbesserungsvorschläge umsetzen, es gibt also eine neue Version der Unit UErrorLog :wink:
Zitat:
Zitat:
Auch die neue Version ist im 1. Post, ich hoffe wiederum, dass sie vielleicht irgendjemand mal gebrauchen kann. Auch Kritik/Verbesserungsvorschläge (evtl. auch Lob? :cyclops: ) sind natürlich immer gerne gesehen :zwinker: |
Re: [Unit] Errorlog
Also ich muss sagen, deine Unit ist echt super. Werde sie direkt in meinem Programm verwenden (wird bald hier in der DP Vorgestellt)...
Super Arbeit! :thumb: Gruß aus Hamburg! |
Re: [Unit] Errorlog
Ich habe mit
![]() ![]() Anstatt auftretende Fehler und Infomeldungen auf die Standardausgabe auszugeben, wird die Nachricht über sogenannte Logger in das Loggingsystem geleitet und gleichzeitig eine Einteilung der Wichtigkeit vorgenommen. Der Programmierer muss sich beim Erstellen des Programms nur um die Wichtigkeit der Meldungen Gedanken machen. Die Filterung und Art der Ausgabe kann zur Laufzeit konfiguriert werden. |
Re: [Unit] Errorlog
Liste der Anhänge anzeigen (Anzahl: 1)
Ich war mal so dreist und habe deine Unit etwas angepasst. Kannst es ja falls du magst übernehmen.
Die wichtigste "Neuerung" ist das implementieren des "Singleton Designpatterns". Ich persönlich mag globale Variablen nicht - daher habe ich mal diesen "Umweg" implementiert. Gruß Reli |
Re: [Unit] Errorlog
So als kleine Anregung:
![]() |
Re: [Unit] Errorlog
Hallo, ich wollte deine ErrorLog Unit verwende, nur leider kommt immer wenn ich auf ErrorLog.Start gehe eine AcessViolation in meiner Anwendung!? wieso das!? was könnte ich da flasch machen?
|
Re: [Unit] Errorlog
Zitat:
Delphi-Quellcode:
Ansonsten weiß ich nicht, wo eine AV auftreten könnte. Kommt die denn nicht wenn du ErrorLog.Start auskommentierst?
initialization
ErrorLog := TErrorLog.Create; finalization if ErrorLog <> nil then ErrorLog.Free; end. Edit: Evtl. könntest du ja auch mal auf ErrorLog.Start einen Breakpoint setzen (mit F5) und dann mit F7 debuggen, sind ja nur 2 oder 3 Zeilen Code. |
Re: [Unit] Errorlog
Zitat:
MfG, Bug |
Re: [Unit] Errorlog
Erstmal ist die Unit super.
Nur ich bekomme einen E/A-Fehler 32, wenn mehrere Anwendungen (andere und die selbe) auf den Log zugreifen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz