diff --git a/src/cli/Logger.cpp b/src/cli/Logger.cpp index 8ba1f5c..9b6a928 100644 --- a/src/cli/Logger.cpp +++ b/src/cli/Logger.cpp @@ -66,8 +66,10 @@ void CLogger::log(eLogLevel level, const std::string_view& msg) { if (level == LOG_TRACE && !m_trace) return; - std::string logPrefix = "", logPrefixColor = ""; - std::string logMsg = ""; + std::lock_guard lg(m_impl->m_logMtx); + + std::string logPrefix = "", logPrefixColor = ""; + std::string logMsg = ""; switch (level) { case LOG_TRACE: diff --git a/src/cli/Logger.hpp b/src/cli/Logger.hpp index 1347645..b6fd6b1 100644 --- a/src/cli/Logger.hpp +++ b/src/cli/Logger.hpp @@ -1,6 +1,7 @@ #include #include #include +#include namespace Hyprutils::CLI { class CLoggerImpl { @@ -24,6 +25,8 @@ namespace Hyprutils::CLI { bool m_fileEnabled = false; bool m_colorEnabled = true; + std::mutex m_logMtx; + // this is fine because CLogger is NOMOVE and NOCOPY CLogger* m_parent = nullptr; };