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.
OK, ich habe beim starten meiner Anwendung im Netz (nur im Netz und nur auf Windows 8.1 Rechner einfach einen Absturz. Das Programm hängt sich auf aber nicht immer.)
Was bedeutet starten im Netz?
Wenn das Log keine Datei sein muss, dann würde ich dir raten, eine Ausgabe auf Konsole zu probieren.
Dazu einfach
AllocConsole 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.