2026-01-28 06:16:04 +00:00

50 lines
1.1 KiB
C++

#pragma once
#include <memory>
#include <mutex>
#include "spdlog/spdlog.h"
namespace dynasty {
namespace log {
class Logger {
private:
static std::shared_ptr<spdlog::logger> logger_instance_;
static std::mutex mutex_;
Logger();
public:
static std::shared_ptr<spdlog::logger> GetLogger();
static void printStack(void);
};
template<typename ...Args>
void log_error(Args &&...args) {
SPDLOG_LOGGER_ERROR(Logger::GetLogger(), std::forward<Args>(args)...);
}
template<typename ...Args>
void log_debug(Args &&...args) {
SPDLOG_LOGGER_DEBUG(Logger::GetLogger(), std::forward<Args>(args)...);
}
template<typename ...Args>
void log_info(Args &&...args) {
SPDLOG_LOGGER_INFO(Logger::GetLogger(), std::forward<Args>(args)...);
}
} //namespace dynasty
} // namespace log
// Check condition: if not satisifed, exit
#define ENFORCE(condition, ...) \
if (!(condition)) { \
dynasty::log::log_error(__VA_ARGS__); \
exit(-1); \
}