1 #ifndef ASYNC_LOGGER_hh_
2 #define ASYNC_LOGGER_hh_
9 #include <condition_variable>
14 #include "Mu2e-STMDAQ/utils/cpu_utils.hh"
16 #include "Mu2e-STMDAQ/utils/Logger.hh"
18 #include "Mu2e-STMDAQ/utils/EnvVars.hh"
20 #include "Mu2e-STMDAQ/utils/timer.hh"
27 using Message = std::pair<std::string, unsigned int>;
35 std::lock_guard<std::mutex> lock(queueMutex);
39 if (printerThread.joinable()) {
44 LoggerSTM::Instance()->CloseLogFile();
46 std::cout <<
"AsyncLogger destructor called.\n";
50 void log(
const std::string& msg,
unsigned int level);
54 std::queue<Message> messageQueue;
55 std::mutex queueMutex;
56 std::condition_variable cv;
57 std::atomic<bool> done;
58 std::thread printerThread;
61 void printerThreadFunc();
67 const std::shared_ptr<cpu_utils>& cpu;