Ich habe drei Optionen für mein Logging-Subsystem in C ++ getestet. Einer ist Log4cplus, einer ist Pantheios und der letzte ist eine einfache Logging-Bibliothek, die wir selbst geschrieben haben.
Log4cplus war viel langsamer als die anderen beiden. Hier sind die Ergebnisse für die Protokollierung von 1.000.000 Protokolleinträgen:
Ich frage mich, ob mir eine Leistungsoptimierung fehlt.
Ich sollte hinzufügen, dass ich immer den Root-Logger verwende, ich logge mich in Datei ein und protokolliere:
LOG4CPLUS_INFO(rootLogger, "Replace me with the text!");
danke, Reza
Die Verwendung von log4cplus::NullAppender
in performance_test
gibt mir Logging 1000000 took: 4sec 343709usec
auf dem halb-geladenen FreeBSD-Server. IOW, der reine Protokollierungsaufwand ist eher gering. Ihre Protokollierungszeiten scheinen vom Zielprotokollierer abhängig zu sein. Wenn Sie log4cplus::FileAppender
verwenden, unterscheiden sich die Timings erheblich.
BEARBEITEN:
Sie müssen FileAppender
ein wenig anpassen. Stellen Sie sicher, dass Sie die Eigenschaft ImmediateFlush
auf false festlegen. Sie könnten BufferSize
auch auf etwas Größeres wie 1000000 Bytes setzen.
Tags und Links c++ performance logging pantheios log4cplus