aboutsummaryrefslogtreecommitdiff
path: root/zencore/logging.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/logging.cpp')
-rw-r--r--zencore/logging.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/zencore/logging.cpp b/zencore/logging.cpp
index 6441fc3bc..c5c0b6446 100644
--- a/zencore/logging.cpp
+++ b/zencore/logging.cpp
@@ -4,25 +4,36 @@
#include <spdlog/sinks/stdout_color_sinks.h>
+namespace zen {
+
+// We shadow the underlying spdlog default logger, in order to avoid a bunch of overhead
+spdlog::logger* TheDefaultLogger;
+
+} // namespace zen
+
namespace zen::logging {
spdlog::logger&
Default()
{
- return *spdlog::default_logger();
+ return *TheDefaultLogger;
+}
+
+void
+SetDefault(std::shared_ptr<spdlog::logger> NewDefaultLogger)
+{
+ spdlog::set_default_logger(NewDefaultLogger);
+ TheDefaultLogger = spdlog::default_logger_raw();
}
spdlog::logger&
Get(std::string_view Name)
{
std::shared_ptr<spdlog::logger> Logger = spdlog::get(std::string(Name));
+
if (!Logger)
{
- Logger = std::make_shared<spdlog::logger>(std::string(Name),
- begin(spdlog::default_logger()->sinks()),
- end(spdlog::default_logger()->sinks()));
-
- Logger->set_level(spdlog::default_logger()->level());
+ Logger = Default().clone(std::string(Name));
spdlog::register_logger(Logger);
}
@@ -47,6 +58,7 @@ ConsoleLog()
void
InitializeLogging()
{
+ TheDefaultLogger = spdlog::default_logger_raw();
}
void