Voglio creare una classe logger in modo tale che con una funzionalità simile a questo:come faccio a scrivere una classe logger con cout l'interfaccia di stile (logger << "Errore:" << val << endl;)
Logger log;
log << "Error: " << value << "seen" << endl;
Questo dovrebbe stamparmi un messaggio formattato personalizzato. Per esempio. "12-09-2009 11:22:33 Errore 5 visto"
mio semplice classe attualmente appare così:
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";
}
Questo farà sì che OSS di avere correttamente il buffer di "Errore: 5 visto". Ma non so quale altra funzione ho bisogno di scrivere/modificare in modo che qualcosa venga stampato sullo schermo. Qualcuno sa come farlo funzionare o c'è un altro modo per progettare questa classe per far funzionare la mia funzionalità?
. Domanda: L' time stamp. Vuoi stampare il timestamp: 1) Ogni espressione 2) Solo all'inizio di ogni riga. Vuoi che la linea si interrompa automaticamente (come per il tuo functionTest()). Fondamentalmente devi essere un po 'di più specificatamente sulle condizioni in cui viene aggiunta la marca temporale. Stai anche registrando su un file la console? Perché hai bisogno di una classe speciale e perché non puoi usare lo stream standard? –
Martin, questa è solo una classe di esempio Ho rimosso la classe originale del logger con solo il problema riguardante l'uso dello stile cout di logger. –