gedeng/include/Gedeng/Logger.h

48 lines
1.8 KiB
C++

#pragma once
#include "Gedeng/String.h"
#include "spdlog/spdlog.h"
#include <memory>
namespace Gedeng {
class Logger {
public:
static void init();
inline static std::shared_ptr<spdlog::logger> &get_core_logger() {
return core_logger;
}
inline static std::shared_ptr<spdlog::logger> &get_client_logger() {
return client_logger;
}
private:
static std::shared_ptr<spdlog::logger> core_logger;
static std::shared_ptr<spdlog::logger> 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__)