Aufbau einer Logging Klasse
-
Hi Leute,
Und zwar moechte ich, dass ich mit meiner Logging Klasse die Ausgabe in ein Konsolenfenster, in ein File, in ein Fenster oder auch per Custom Funktion schreiben kann. Die Frage ist jetzt, ob ich dafuer jeweils ne eigene Klasse erstelle oder ne Funktion ala SetLoggingMode() angib und man da dann angibt ob halt in die Konsole, in ein File usw geschrieben werden soll.
Dann haette ich noch ne zweite Frage: welches Prefix fuer Klassen benutzt ihr. Ich waere ja persoenlich fuer das 'C' -> CLog aber hab schon oefter gelesen das das bei MFC benutzt wird und man das vermeiden sollte!?
Gruessle C0de4Fun
-
C0de4Fun schrieb:
Hi Leute,
Und zwar moechte ich, dass ich mit meiner Logging Klasse die Ausgabe in ein Konsolenfenster, in ein File, in ein Fenster oder auch per Custom Funktion schreiben kann. Die Frage ist jetzt, ob ich dafuer jeweils ne eigene Klasse erstelle oder ne Funktion ala SetLoggingMode() angib und man da dann angibt ob halt in die Konsole, in ein File usw geschrieben werden soll.
Mach das mal lieber alles als eine Klasse. Falls die Funktionen der Ausgabe sehr unterschiedlich sind, kannst du ihr ein Strategy Pattern verpassen (dein SetLoggingMode()), ansonsten wäre es vielleicht auch eine Idee, dem Loggingobjekt einfach einen ostream zu übergeben, in den dann geschrieben wird.
Dann haette ich noch ne zweite Frage: welches Prefix fuer Klassen benutzt ihr. Ich waere ja persoenlich fuer das 'C' -> CLog aber hab schon oefter gelesen das das bei MFC benutzt wird und man das vermeiden sollte!?
Ich benutze keine Präfixe für den Namen von Datentypen. Was soll mir das bringen? Was soll es anderes sein, eine Funktion? Das sollte immer aus dem Zusammenhang klar sein, was gemeint ist. Ich benutze jedoch eine einheitliche Schreibweise für Namen. Wenn ich z.B. einheitlich weiß, dass meine Klassennamen bei diesem Projekt auf bayrisch sind und CamelCase benutzen, dann muss ich nicht lange nachschlagen wie der Klassenname genau lautet, wenn ich ihn brauche.
(Ich benutze auch keine Präfixe um den Datentyp einer Variablen zu beschreiben, aber wenn wir hier anfangen ungarische Notation zu diskutieren wird der Thread in wenigen Minuten explodieren und nach 4 Seiten Flamewar geschlossen.)
-
Falls Du das als programmiertechnische Fingerüberung machen willst: Nur zu! Ansonsten gibt es jede Menge fertige Logging Frameworks: log4cxx, log4cpp, ... die alle Deine gewünschten Merkmale beherrschen.
Bzgl des Präfixes: Kein Präfix, dieses "CKlassenname" ist ein Relikt aus MFC Zeiten in denen die Ungarische Notation noch benutzt wurde. Insbesondere: Was machst Du denn nach eienm Typedef? Ist es dann ein TKlassenname (weil typedef), immer noch ein CKlassenname (weil immer noch eine Klasse) oder ein CTKlassenname oder ein TCKlassenname? Was passiert nach einem weiteren Typedef?
-
SeppJ schrieb:
dass meine Klassennamen bei diesem Projekt auf bayrisch sind und CamelCase benutzen
class Huifsklass { }; class SchreibsAusse { }; class LesEine { };auf die Idee bin ich auch noch nicht gekommen. Mal was anderes

-
Alles klar. Dann werd ich mir mal das Strategy Pattern anschaun und versuchen umzusetzten. Danke.
@ogni42
Joa is eig nur als kleine Uebung gedacht und weil ich ned weiss was ich programmieren soll. Hab zz frei bis zum 1. Oktober und wollt was machen wusst aber ned genau was und da ich selber schon oeffter mal nach einer Klasse zum loggen gesucht hab aber nix gefunden hab was mir gefaellt mach ich jetzt ne eigene.
Und des mit dem Prefix is daraus entstanden:
hab ein paar Funktionen und ne Klasse geschrieben um mit der Windows Konsole besser umgehen zu koenne.
namespace CONSOLE { /*....*/ class Console : public Singleton<CConsole> {/*...*/ }; }und wenn ich jetzt ein reference Object von Conosle haben moechte darf ich es ja nicht Console nennen (oder?) und das fand ich ned schoen da ich es dann meistens Con genannt habe.
Aber danke schon mal.
Gruessle C0de4Fun