diff options
Diffstat (limited to 'zencore')
| -rw-r--r-- | zencore/include/zencore/logging.h | 14 | ||||
| -rw-r--r-- | zencore/logging.cpp | 57 |
2 files changed, 71 insertions, 0 deletions
diff --git a/zencore/include/zencore/logging.h b/zencore/include/zencore/logging.h index e77314178..7a08cc48b 100644 --- a/zencore/include/zencore/logging.h +++ b/zencore/include/zencore/logging.h @@ -7,3 +7,17 @@ #include <spdlog/spdlog.h> #include "postwindows.h" // clang-format on + +#include <string_view> + +namespace zen::logging { + +spdlog::logger& Default(); +spdlog::logger& ConsoleLog(); +spdlog::logger& Get(std::string_view Name); + +void InitializeLogging(); +void ShutdownLogging(); + + +} // namespace zen::logging diff --git a/zencore/logging.cpp b/zencore/logging.cpp new file mode 100644 index 000000000..89d588650 --- /dev/null +++ b/zencore/logging.cpp @@ -0,0 +1,57 @@ +#include "zencore/logging.h" + +#include <spdlog/sinks/stdout_color_sinks.h> + +namespace zen::logging { + +spdlog::logger& +Default() +{ + return *spdlog::default_logger(); +} + +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()); + spdlog::register_logger(Logger); + } + + return *Logger; +} + +std::once_flag ConsoleInitFlag; +std::shared_ptr<spdlog::logger> ConLogger; + +spdlog::logger& +ConsoleLog() +{ + std::call_once(ConsoleInitFlag, [&] { + ConLogger = spdlog::stdout_color_mt("console"); + + ConLogger->set_pattern("%v"); + }); + + return *ConLogger; +} + +void +InitializeLogging() +{ +} + +void +ShutdownLogging() +{ + spdlog::drop_all(); + spdlog::shutdown(); +} + +} // namespace zen::logging |