Thema: Delphi Log Datei

Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Log Datei

  Alt 1. Mär 2015, 19:06
Klar gibt es die: Du deklarierst eine globale TStringList und erweiterst die zu loggenden Methoden, um via Add den gewünschten Text hinzuzufügen. Nach jedem Add speicherst du die Stringliste via SaveToFile.
Das halte ich für keine gute Idee, jedenfalls nicht bei längeren Logs. Denn dann werden massenhaft unnötig Daten auf Platte geschrieben (jedes Mal die komplette StringList statt nur des letzten Eintrags).

Ich verwende für solche Fälle eine eigene, kleine Logger-Klasse, die wahlweise den Logtext in einem Konsolenfenster ausgibt, an OutputDebugString sendet, in eine Textdatei oder eine Html-Datei schreibt. Konsole und Html unterstützen dabei verschiedene Farben, was den Logtext leserlicher machen kann.
Es geht doch hier nicht darum, die perfekteste Logger-Klasse zu schreiben, sondern um schnell mal ein Problem zu lösen. Aber du hast sicher keine Einwände, deine hochexquisite Loggerklasse hier zur Verfügung zu stellen, damit dem armen Walter schnell geholfen werden kann.

Was ist dagegen einzuwenden, wenn der Debugger nicht zum gewünschen Ergebnis führt? Und was ist dagegen einzuwenden, zu Testzwecken jede Änderung der Stringliste sofort zu speichern? Nach dem Absturz kann man die Stringliste wohl eher nicht mehr speichern und alle hinzugefügten Zeilen stehen irgendwo im Speicher. Vielleicht hast du ja ein Tool, um die danach schnell aufzufinden?

Was bedeutet starten im Netz?
Was kann "starten im Netz" schon anderes bedeuten als eine Exe von einem anderen Rechner aus, ergo über ein Netzwerk zu starten?

Wenn das Log keine Datei sein muss, dann würde ich dir raten, eine Ausgabe auf Konsole zu probieren.
Die beim Absturz der Anwendung natürlich weiterhin sichtbar bleibt, oder doch nicht?

Dazu einfach AttachConsole aufrufen (erzeugt das Konsolenfester für dein Programm), danach kann dein Programm per WriteLn auf die Konsole schreiben, selbst wenn es eine VCL-Anwendung ist.
Alternativ eben OutputDebugString - dabei bleibt die Ausgabe unsichtbar, du musst ein spezielles Programm wie den Delphi-Debugger oder DebugView benutzen, um sie zu sehen.
Alles in allem sehr schnell und effizient durchführbare Lösungsvorschläge, alle Achtung
  Mit Zitat antworten Zitat