ariogato / Koramu

A selfmade 2D RPG
4 stars 0 forks source link

Eine Log Klasse #12

Closed ariogato closed 7 years ago

ariogato commented 7 years ago

Es wäre ganz praktisch wenn wir eine Log Klasse hätten und somit entscheiden könnten wohin unsere Fehlermeldungen transportiert werden. Mit einer Log Klasse, die im Grunde genommen nur eine oder zwei Methoden hat, die das Geschriebene einem Stream übergeben. (d.h. in eine Datei schreibt oder auf den Bildschirm schmeißt).

Die Klasse an sich ist durchaus einfach zu erstellen. Einfach nach der Klassenkarte vorgehen und alles wird gut sein.

klassenkarte_log

Die Magie passiert nämlich erst im Konstruktor oder besser gesagt in den Konstruktoren: Wir brauchen zwei Konstruktoren. Dies bewerkstelligen wir, indem wir den Konstruktor überladen, wobei er einmal keine Parameter entgegennimmt und das zweite Mal einen string mit dem Pfad zur Log-Datei.

  1. In dem Konstruktor ohne Parameter:

    • Es wird einfach die Membervariable outputStream mit std::cout initialisiert. Ja das geht.
  2. In dem Konstruktor mit Parametern:

    • Zuerst soll gecheckt werden, ob die Datei existiert, wenn nicht soll outputStream wieder mit std::cout initialisiert werden. (Nicht vergessen hier auch eine Fehlermeldung auszugeben)
    • Wir müssen die Datei öffnen. Das machen wir mit der Funktion fstream::open.
  3. In den Memberfunktionen müsst ihr einfach so vorgehen wie gehabt bei Ausgaben.

    • outputStream << msg << endl;
    • ErrorLog() und PrintLog() sollen fürs erste noch das gleiche machen.

Anmerkungen:

  1. Wir brauchen in der Datei Logger.h sowohl iostream als auch fstream... also #include <iostream> & #include <fstream>
  2. Im Destruktor soll die Datei mit fstream::close evtl. wieder geschlossen werden.
ariogato commented 7 years ago

Die Klasse ist ein wenig komplizierter geworden als ich anfangs erhofft hatte, deshalb übernehme ich jetzt einfach.