Synchronisiertes cout für Logger bauen



  • Hi,

    ich habe eine Logger Klasse, die mir schön synchronisiert alle Sachen ausgibt wie ich will und jene verlangt immer einen String. Kann sich jemand vorstellen, wie man eine Klasse bauen müßte, die praktisch std::cout ersetzt und eine Stream-Fassade für diese Logger Klasse darstellt?

    Die Idee ist, daß man sowas macht:

    sync_cout << "logausgabe " << i_value << "|" << 30 << sync_endl;
    

    Dieser Stream sollte "irgendwo" nach "logausgabe 0|30" zusammengesetzt werden und dann mit einem sync_endl; komplett als String an den Logger übergeben werden. Um genauso damit hantieren zu können wie mit cout.

    Sonst muß man immer sowas machen:

    {
       std::stringstream s;
       s << "logausgabe " << i_value << "|" << 30;
       logger( s.str() );
    }
    

    was vergleichsweise lang und unpraktisch ist.

    Geht das irgendwie, was ich mir vorstelle? danke



  • Du könntest deine Logger-Klasse von std::ostream ableiten und im ctor dem geerbten ostream-ctor einen streambuf deiner Wahl verpassen. Dann kannst du deinen Logger wie einen Stream benutzen (und evtl noch Anpassungen vornehmen)


Anmelden zum Antworten