2016-05-20 5 views
-1

Ich verwende spdlog, um Protokolle für verwalteten und nicht verwalteten Code in Visual Studio auszuführen. Aus diesem Grund habe ich Shell-Klassen geschrieben, die spdlog unter der Haube verwenden.Wie spdlog mehrmals im selben Programm starten und herunterfahren?

Allerdings habe ich Probleme mit meinen Komponententests. Meine Komponententests werden in einer einzelnen ausführbaren Datei ausgeführt. Daher müssen Sie spdlog-Protokollierer und Protokolldateien mehrmals anhalten und neu starten.

Wie mache ich das? Ich verwende diesen Code in einer Klasse zur Zeit Instanzen spdlog in einem Windows-DLL zu starten:

private: 
    API static std::mutex _mutex; 
    API static std::shared_ptr<spdlog::logger> _instance; 

    static std::shared_ptr<spdlog::logger> Instance() 
    { 
     std::unique_lock<std::mutex> lck(_mutex, std::defer_lock); 
     lck.lock(); 
     if (_instance == nullptr) 
     { 
      _instance = spdlog::rotating_logger_mt("Logger", "EXO", 1024 * 1024 * 5, 4, true); 
     } 
     lck.unlock(); 
     return _instance; 
    } 

Antwort

1

Trotz des downvotes zu schließen, weil die Frage Meinung basierte, es ist eigentlich eine einfache Antwort auf diese Frage, die Ich habe vom Schöpfer von spdlog bekommen.

Von How to shutdown and restart in the same program? zum Herunterfahren:

void Shutdown() 
{ 
    spdlog::drop("Logger"); 
    delete _instance; 
} 

Dann können Sie oben wieder den Entstehungsprozess durchlaufen.