AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LOG-Datei erstellen

Ein Thema von Uncle Cracker · begonnen am 18. Dez 2003 · letzter Beitrag vom 19. Dez 2003
Antwort Antwort
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#1

LOG-Datei erstellen

  Alt 18. Dez 2003, 20:18
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

[edit=Matze]Code formatiert. Mfg, Matze[/edit]
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: LOG-Datei erstellen

  Alt 18. Dez 2003, 20:31
Warum drei Routinen und eine globale Variable?

Delphi-Quellcode:
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;
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: LOG-Datei erstellen

  Alt 19. Dez 2003, 11:00
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 log4j werfen. Zwar ist das eine Lösung für Java, die Ideen lassen sich aber 1:1 in Delphi umsetzen. Eine entsprechende Implementierung in Delphi ist bereits in der Meche und vor ein paar Jahren hat Keith Wood (einer der Beteiligten dieses Projekts) in der CodeCentral ebenfalls eine Implementierung vorgestellt: Bei Google suchencodecentral log4d.
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz