![]() |
LOG-Datei erstellen
Manche Leute wollen wissen, wie man eine LOG-Datei erstellt, eigentlich ganz simple, da es nur eine einfach Textdatei ist, doch für welche die noch nicht ganz wissen wie sie das anstellen sollen, hier mal ein Beispiel:
Delphi-Quellcode:
var f: TextFile; //Globale Variable
procedure LogOpen(Datei: string); //Procedure zum Öffnen der LOG-Datei begin AssignFile(f, Datei); //Ordnet der Variable f Namen zu Rewrite(f); //Erstellt die Datei WriteLn(f, DateToStr(Date) + ' ' + TimeToStr(Time) + ': Geöffnet'); //Schreibt in die Datei end; Procedure LogClose; //Procedur zum beenden der LOG-Datei begin WriteLn(f, DateToStr(Date) + ' ' + TimeToStr(Time) + ': Beendet'); //Schreibt in die Datei CloseFile(f); //Beendet Zuordnung der Variable f end; procedure LogAdd(Text:String;Zeilenende:Boolean); begin Text := DateToStr(Date) + ' ' + TimeToStr(Time) + ': ' + Text; //Schreibt Text in die LOG-Datei if Zeilenende then WriteLn(f, Text) else Write(f, Text); //Schreibt in die LOG-Datei mit Zeilenende oder nicht end; Hinweis: Der Text wird erst nach LogClose in die Datei geschrieben, zwischendurch nicht. Außerdem kann man erst in die Datei schreiben wenn man mit LogOpen begonnen hat. PS: Bitte schreibt bei Problemen oder Verbesserungsvorschlägen oder wenn die Beschriftung falsch ist :roll: [edit=Matze]Code formatiert. Mfg, Matze[/edit] |
Re: LOG-Datei erstellen
Warum drei Routinen und eine globale Variable?
Delphi-Quellcode:
Eine Routine, keine globale Variable und es steht sofort im Logfile. Stürzt dein Programm ab, dürfte im Logfile nicht all zu viel drin stehen. Nun ja eventuell schon, nur wird die datei nicht ordnungsgemäß geschlossen.
const
LOGFILE = 'LoagFile.log'; function WriteLog(LogString: String): Integer; var f: TextFile; begin {$IOChecks OFF} AssignFile(f, ExtractFilePath(ParamStr(0))+LOGFILE); if FileExists(ExtractFilePath(ParamStr(0))+LOGFILE) then Append(f) else Rewrite(f); Writeln(f, LogString); CloseFile(f); result := GetLastError(); {$IOCHECKS ON} end; |
Re: LOG-Datei erstellen
IMHO gibt es bei einem Logging-System wesentlich mehr zu beachten, als das Anlegen einer Datei:
Neben unterschiedlichen Ausgabeströmen (zB OBS, Remote) und -Strategien (zB Textfile nach >100k neu erzeugen) und der Möglichkeit, die "Geschwätzigkeit" zb mithilfe von Qualifizierung der Einträge (Debug, Info, Warnung, Error, Fatal,...) oder innerhalb von Hierarchien (App.Logic, App.DBMS, App.GUI.Input, ...) zu regulieren sowie das optionale Sammeln gewisser Rahmendaten (zB Zeit, Uptime, Process-/Thread-Id/-Name), sollte so ein System vollständig zur Lauftzeit konfigurierbar sein, um vor Ort intensivere Analysen durchführen zu können oder bei der Entwicklung detaillierte Informationen zu erhalten, ohne dass die Performance der Release-Infomation darunter leidet. Die Kapselung der tatsächlichen Darstellung (HTML, PlainText, ...) bzw des Renderings innerhalb des Loggins-Konzept, um zB ein Objekt direkt übergeben zu können anstatt einen HTML-String aus den Eigenschaften zu basteln, runden die Lösung dann zusammen mit einfacher Erweiterbarkeit und diversen Filtermöglichkeiten ab... Wem das ganze zu utopisch klingt, sollte einmal einen Blick auf ![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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