Loglibrary fuer C++



  • Hiho!
    Ich bin auf der Suche nach einer guten Log-Library fuer C++; in der Art wie sie's z. B. in der Python oder Java-Std.Lib gibt, muss aber bei weitem nicht so viele Features haben. Boost scheint da ja nichts zu bieten, also was nehmt ihr in so einem Fall? Was selbst zusammen gehacktes oder habt ihr Empfehlungen?



  • Habe leider bisher kein intensives Logging betrieben (ich benutze selbst an manchen Stellen einfach nur std::clog).

    Aber es gibt eine ganze Reihe an Logging-Libs, kann dir also nur URLs spendieren:
    http://pantheios.sourceforge.net/ (ehem. kommerzielles Produkt, jetzt OS)
    http://dgd.sourceforge.net/ (sieht interessant aus)
    http://logging.apache.org/log4cxx/

    Bei denen tut sich nichts mehr:
    http://log4cplus.sourceforge.net/
    http://log4cpp.sourceforge.net/

    Plus den systemspezifischen Logging-APIs... die darf man auch nicht vergessen. 😉



  • Blue-Tiger schrieb:

    also was nehmt ihr in so einem Fall?

    in einem aktuellen Projekt nehm ich etwas selbst gehacktes.

    Ist eine kleine Client/Server-Architektur. Der Client (also das Programm, was loggen will) schreibt in eine Pipe/Socket Pakete mit fester Größe N. Der Server liest das dann aus und dumpt das in eine Log-Datei oder wertet das anders aus.

    Die API läuft über Macros ala

    #define LOG(prio, data) \
     std::stringstream out; \
     out << data; \
     logger.log((prio), __FILE__, __LINE__, __func__, timestamp(), out.str());
    

    damit Datei, Zeile und Funktion geloggt werden können und das loggen komfortabel funktioniert.

    Die Architektur ist ein Client/Server, damit man extern die Art des Loggings beeinflussen kann ohne die Anwendung zu verändern oder gar neu zu starten. Außerdem soll dies der Fehlertoleranz dienen.

    Alles in allem ist das eine Aufgabe von vielleicht einer Stunde Programmierarbeit.



  • Blue-Tiger schrieb:

    [...] guten Log-Library fuer C++; in der Art wie sie's z. B. in der Python [...]

    LOL! Die Python-Variante bau ich grad für ein C++-Framework nach... 🙂

    Grüsse

    *this


Anmelden zum Antworten