2016-05-20 23 views
-1

私はspdlogを使用して、Visual Studioの管理対象コードと非管理対象コードの両方のログを実行しています。そのため、私はフードの下でspdlogを使用するシェルクラスを作成しました。spdlogを同じプログラムで複数回起動およびシャットダウンする方法はありますか?

しかし、私は単体テストに問題があります。私の単体テストは1つの実行ファイルで実行されるため、spdlogロガーとログファイルを複数回停止して再起動する必要があります。

どうすればよいですか?私は現在、WindowsのDLLにspdlogのインスタンスを起動するには、クラスでこのコードを使用しています:

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; 
    } 

答えて

1

downvotesにもかかわらず、質問は意見ベースであるため、閉じるために、実際にこの質問への単一の答えはそこにあります私はspdlogの作成者から得ました。シャットダウンへHow to shutdown and restart in the same program?から

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

その後、再び上記の作成プロセスを経ることができます。

関連する問題