2024-02-26 08:27:22 +08:00
|
|
|
#pragma once
|
2024-02-26 08:48:10 +08:00
|
|
|
|
|
|
|
|
#include "spdlog/spdlog.h"
|
|
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#include <stdexcept>
|
|
|
|
|
|
|
|
|
|
class zlog final
|
2024-02-26 08:27:22 +08:00
|
|
|
{
|
2024-02-26 08:48:10 +08:00
|
|
|
public:
|
|
|
|
|
enum class LogLevel : uint8_t
|
|
|
|
|
{
|
|
|
|
|
debug,
|
|
|
|
|
info,
|
|
|
|
|
warn,
|
|
|
|
|
error,
|
|
|
|
|
fatal
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
zlog();
|
|
|
|
|
~zlog();
|
|
|
|
|
|
|
|
|
|
template<typename... TARGS>
|
|
|
|
|
void log(LogLevel level, TARGS&&... args)
|
|
|
|
|
{
|
|
|
|
|
switch (level)
|
|
|
|
|
{
|
|
|
|
|
case LogLevel::debug:
|
|
|
|
|
m_logger->debug(std::forward<TARGS>(args)...);
|
|
|
|
|
break;
|
|
|
|
|
case LogLevel::info:
|
|
|
|
|
m_logger->info(std::forward<TARGS>(args)...);
|
|
|
|
|
break;
|
|
|
|
|
case LogLevel::warn:
|
|
|
|
|
m_logger->warn(std::forward<TARGS>(args)...);
|
|
|
|
|
break;
|
|
|
|
|
case LogLevel::error:
|
|
|
|
|
m_logger->error(std::forward<TARGS>(args)...);
|
|
|
|
|
break;
|
|
|
|
|
case LogLevel::fatal:
|
|
|
|
|
m_logger->critical(std::forward<TARGS>(args)...);
|
|
|
|
|
fatalCallback(std::forward<TARGS>(args)...);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<typename... TARGS>
|
|
|
|
|
void fatalCallback(TARGS&&... args)
|
|
|
|
|
{
|
|
|
|
|
const std::string format_str = fmt::format(std::forward<TARGS>(args)...);
|
|
|
|
|
throw std::runtime_error(format_str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::shared_ptr<spdlog::logger> m_logger;
|
|
|
|
|
};
|
|
|
|
|
extern zlog gLog;
|
|
|
|
|
#define LOG_HELPER(LOG_LEVEL, ...) \
|
|
|
|
|
gLog.log(LOG_LEVEL, "[" + std::string(__FUNCTION__) + "] " + __VA_ARGS__);
|
|
|
|
|
|
|
|
|
|
#define LOG_DEBUG(...) LOG_HELPER(zlog::LogLevel::debug, __VA_ARGS__);
|
|
|
|
|
|
|
|
|
|
#define LOG_INFO(...) LOG_HELPER(zlog::LogLevel::info, __VA_ARGS__);
|
|
|
|
|
|
|
|
|
|
#define LOG_WARN(...) LOG_HELPER(zlog::LogLevel::warn, __VA_ARGS__);
|
|
|
|
|
|
|
|
|
|
#define LOG_ERROR(...) LOG_HELPER(zlog::LogLevel::error, __VA_ARGS__);
|
2024-02-26 08:27:22 +08:00
|
|
|
|
2024-02-26 08:48:10 +08:00
|
|
|
#define LOG_FATAL(...) LOG_HELPER(zlog::LogLevel::fatal, __VA_ARGS__);
|