diff options
Diffstat (limited to 'src/zencore/logging.cpp')
| -rw-r--r-- | src/zencore/logging.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/zencore/logging.cpp b/src/zencore/logging.cpp index 685c79d82..a6697c443 100644 --- a/src/zencore/logging.cpp +++ b/src/zencore/logging.cpp @@ -346,6 +346,8 @@ SetErrorLog(std::string_view NewErrorLoggerId) } } +RwLock g_LoggerMutex; + LoggerRef Get(std::string_view Name) { @@ -355,9 +357,16 @@ Get(std::string_view Name) if (!Logger) { - Logger = Default().SpdLogger->clone(std::string(Name)); - spdlog::apply_logger_env_levels(Logger); - spdlog::register_logger(Logger); + g_LoggerMutex.WithExclusiveLock([&] { + Logger = spdlog::get(std::string(Name)); + + if (!Logger) + { + Logger = Default().SpdLogger->clone(std::string(Name)); + spdlog::apply_logger_env_levels(Logger); + spdlog::register_logger(Logger); + } + }); } return *Logger; |