// Copyright Epic Games, Inc. All Rights Reserved. #include "zencore/logging.h" #include 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 *TheDefaultLogger; } void SetDefault(std::shared_ptr NewDefaultLogger) { spdlog::set_default_logger(NewDefaultLogger); TheDefaultLogger = spdlog::default_logger_raw(); } spdlog::logger& Get(std::string_view Name) { std::shared_ptr Logger = spdlog::get(std::string(Name)); if (!Logger) { Logger = Default().clone(std::string(Name)); spdlog::register_logger(Logger); } return *Logger; } std::once_flag ConsoleInitFlag; std::shared_ptr ConLogger; spdlog::logger& ConsoleLog() { std::call_once(ConsoleInitFlag, [&] { ConLogger = spdlog::stdout_color_mt("console"); ConLogger->set_pattern("%v"); }); return *ConLogger; } void InitializeLogging() { TheDefaultLogger = spdlog::default_logger_raw(); } void ShutdownLogging() { spdlog::drop_all(); spdlog::shutdown(); } } // namespace zen::logging