Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Logfile Best-Practice

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.11.2006
    Beiträge
    6

    Logfile Best-Practice

    Hi,

    das Thema logfiles hört sich zwar banal an, aber ich mach' mir da im Moment echt Gedanken drüber. Ich frag' mich ob's ne Best-Practice gibt wie man logfiles aus nem C-Programm erstellt?

    Denn...

    Wenn ich meine Logeinträge Puffere und mein C-Programm schmiert ab, hab' ich die Aufzeichnungen aus dem Puffer verloren. Wenn ich ständig ne Datei öffne und einen Eintrag wegschreibe, dann das Ding wieder schließe, hab ich ne Menge I/O. Wenn ich den StdOut umleite: server.exe > log.txt hab' ich keine Kontrolle über die Dateigröße und kann nicht einfach bei > 1MB ne neue anfangen.

    Und wie sieht's mit nem Stream aus, wenn ich nen Stream öffne und den offen lasse, das Programm schmiert ab, sind meine Inhalte auch nicht geschrieben, oder?

    Also kennt einer von da nen goldenen Weg?

    Thanks in advance!

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.12.2008
    Beiträge
    34
    Es gibt eine FUnktion die nennt sich flush() o.ä. Die schreibt den Buffer auf Platte.

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    Zitat Zitat von kater Beitrag anzeigen
    Es gibt eine FUnktion die nennt sich flush() o.ä. Die schreibt den Buffer auf Platte.
    und erzeugt wie hier schon genannt wieder IO

  4. #4
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von quinte17 Beitrag anzeigen
    und erzeugt wie hier schon genannt wieder IO
    Na - loggen ohne IO wird wohl nicht gehen

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    naja, 2 möglichkeiten ...

    1. ungepuffert ein logfile schreiben ....
    Es gibt mittel und wege das puffern von datenstroemen auf die HDD zu vermieden.
    Verringert aber nur klein wenig den overhaed von der buffered loesung + staendiges flush. Und noch ein vorteil waer das zwischen dem schreiben und dem flush nix schief gehen kann ...

    2. das BS damit betrauen.
    Unter linux kann man z.b. direkt an den logd (oder irgend ein derivat) nachrichten schicken, der spult das dann dementsprechend aus. der logdaemon kann ziemlich umfangreich konfiguriert werden.
    unter windows gibts auch was aehnliches, den systemnachrichtendienst ,,,,
    Nachteile: sehr komplex, plattformanhaengig. Und wenn da jeder drirumschreibt ... wirds da auch schnll unuebersichtlich,

    ciao ...

  6. #6
    Registrierter Benutzer
    Registriert seit
    06.11.2006
    Beiträge
    6
    Danke für die Antworten.

    Stimmt schon, ohne I/O geht's nicht...wie auch ! Ich denke es ist immer ein Tradeoff zwischen der gewünschten Granularität der Logeinträge und der Erzeugung von I/O. Springt man in kritische Bereiche, nimmt man halt etwas mehr I/O in kauf und schreibt öfter auf Platte als in unkritischen.

    Gruß,
    oneof6

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •