#pragma once #include "Gedeng/String.h" #include "spdlog/spdlog.h" #include namespace Gedeng { class Logger { public: static void init(); inline static std::shared_ptr &get_core_logger() { return core_logger; } inline static std::shared_ptr &get_client_logger() { return client_logger; } static void debug(const String &text); private: static std::shared_ptr core_logger; static std::shared_ptr client_logger; }; } // namespace Gedeng // Core log macros #define GG_CORE_FATAL(...) \ ::Gedeng::Logger::get_core_logger()->fatal(__VA_ARGS__) #define GG_CORE_ERROR(...) \ ::Gedeng::Logger::get_core_logger()->error(__VA_ARGS__) #define GG_CORE_WARN(...) ::Gedeng::Logger::get_core_logger()->warn(__VA_ARGS__) #define GG_CORE_INFO(...) ::Gedeng::Logger::get_core_logger()->info(__VA_ARGS__) #define GG_CORE_TRACE(...) \ ::Gedeng::Logger::get_core_logger()->trace(__VA_ARGS__) // Client log macros #define GG_CLIENT_FATAL(...) \ ::Gedeng::Logger::get_client_logger()->fatal(__VA_ARGS__) #define GG_CLIENT_ERROR(...) \ ::Gedeng::Logger::get_client_logger()->error(__VA_ARGS__) #define GG_CLIENT_WARN(...) \ ::Gedeng::Logger::get_client_logger()->warn(__VA_ARGS__) #define GG_CLIENT_INFO(...) \ ::Gedeng::Logger::get_client_logger()->info(__VA_ARGS__) #define GG_CLIENT_TRACE(...) \ ::Gedeng::Logger::get_client_logger()->trace(__VA_ARGS__)