ich erstellen möchten einen Logger-Klasse, so dass mit einer Funktionalität wie folgt aus:wie kann ich einen Logger-Klasse mit COut Stil-Schnittstelle schreiben (Logger << „Fehler:“ << val << endl;)
Logger log;
log << "Error: " << value << "seen" << endl;
Dies sollte mir eine benutzerdefinierte formatierte Nachricht drucken. Z.B. „12-09-2009 11.22.33 Fehler 5 gesehen“
Meine einfache Klasse sieht derzeit wie folgt aus:
class Logger {
private:
ostringstream oss;
public:
template <typename T>
Logger& operator<<(T a);
}
template <typename T>
Logger& Logger::operator<<(T a) {
oss << a;
return *this;
}
void functionTest(void) {
Logger log;
log << "Error: " << 5 << " seen";
}
Diese oss richtig verursachen, um den Puffer „Fehler: 5 gesehen“ haben. Aber ich weiß nicht, welche andere Funktion ich schreiben/ändern muss, damit etwas auf dem Bildschirm gedruckt wird. Weiß jemand, wie man das zum Laufen bringt oder gibt es eine andere Möglichkeit, diese Klasse so zu gestalten, dass meine Funktionalität funktioniert?
. Frage: Die Zeitstempel: Soll die Zeit abgelaufen sein: 1) Jeder Ausdruck 2) Nur am Anfang jeder Zeile Wollen Sie, dass die Zeile selbst terminiert (gemäß Ihrer Funktion Test()) Grundsätzlich müssen Sie ein bisschen mehr sein Spezifisch über die Bedingungen, unter denen der Zeitstempel hinzugefügt wird.Außerdem protokollieren Sie in einer Datei die Konsole beide? Warum brauchen Sie eine spezielle Klasse und warum können Sie nicht den Standard-Stream? –
Martin, dies ist nur eine Beispielklasse Ich habe die ursprüngliche Logger-Klasse mit nur dem Problem bezüglich der Cout-Style-Verwendung reduziert von Logger. –