2 #ifndef ENIGMA_LOGGER_H
3 #define ENIGMA_LOGGER_H
8 #pragma warning(push, 0)
9 #include <spdlog/fmt/ostr.h>
10 #include <spdlog/spdlog.h>
17 ENIGMA_STATIC_CLASS(
Logger);
31 static const std::shared_ptr<spdlog::logger>&
getLogger() noexcept {
return m_logger; }
34 inline static std::shared_ptr<spdlog::logger> m_logger{
nullptr};
39 #define ENIGMA_TRACE(...) ::Enigma::Logger::getLogger()->trace(__VA_ARGS__)
40 #define ENIGMA_LOG(...) ::Enigma::Logger::getLogger()->debug(__VA_ARGS__)
41 #define ENIGMA_INFO(...) ::Enigma::Logger::getLogger()->info(__VA_ARGS__)
42 #define ENIGMA_WARN(...) ::Enigma::Logger::getLogger()->warn("{}\n{}:{}\n{}", fmt::format(__VA_ARGS__), __FILE__, __LINE__, ENIGMA_CURRENT_FUNCTION)
43 #define ENIGMA_ERROR(...) ::Enigma::Logger::getLogger()->error("{}\n{}:{}\n{}", fmt::format(__VA_ARGS__), __FILE__, __LINE__, ENIGMA_CURRENT_FUNCTION)
44 #define ENIGMA_CRITICAL(...) ::Enigma::Logger::getLogger()->critical("{}\n{}:{}\n{}", fmt::format(__VA_ARGS__), __FILE__, __LINE__, ENIGMA_CURRENT_FUNCTION)
46 #define ENIGMA_TRACE_IF(condition, ...) \
47 if ((condition)) ENIGMA_TRACE(__VA_ARGS__);
48 #define ENIGMA_LOG_IF(condition, ...) \
49 if ((condition)) ENIGMA_LOG(__VA_ARGS__);
50 #define ENIGMA_INFO_IF(condition, ...) \
51 if ((condition)) ENIGMA_INFO(__VA_ARGS__);
52 #define ENIGMA_WARN_IF(condition, ...) \
53 if ((condition)) ENIGMA_WARN(__VA_ARGS__);
54 #define ENIGMA_ERROR_IF(condition, ...) \
55 if ((condition)) ENIGMA_ERROR(__VA_ARGS__);
56 #define ENIGMA_CRITICAL_IF(condition, ...) \
57 if ((condition)) ENIGMA_CRITICAL(__VA_ARGS__);
59 #define log_trace(...) ENIGMA_TRACE(__VA_ARGS__)
60 #define log_debug(...) ENIGMA_LOG(__VA_ARGS__)
61 #define log_info(...) ENIGMA_INFO(__VA_ARGS__)
62 #define log_warn(...) ENIGMA_WARN(__VA_ARGS__)
63 #define log_error(...) ENIGMA_ERROR(__VA_ARGS__)
64 #define log_critical(...) ENIGMA_CRITICAL(__VA_ARGS__)
66 #define log_trace_if(...) \
67 if ((condition)) ENIGMA_TRACE(__VA_ARGS__);
68 #define log_debug_if(...) \
69 if ((condition)) ENIGMA_LOG(__VA_ARGS__);
70 #define log_info_if(...) \
71 if ((condition)) ENIGMA_INFO(__VA_ARGS__);
72 #define log_warn_if(...) \
73 if ((condition)) ENIGMA_WARN(__VA_ARGS__);
74 #define log_error_if(...) \
75 if ((condition)) ENIGMA_ERROR(__VA_ARGS__);
76 #define log_critical_if(...) \
77 if ((condition)) ENIGMA_CRITICAL(__VA_ARGS__);
79 #define LOG_TRACE(...) ENIGMA_TRACE(__VA_ARGS__)
80 #define LOG_DEBUG(...) ENIGMA_LOG(__VA_ARGS__)
81 #define LOG_INFO(...) ENIGMA_INFO(__VA_ARGS__)
82 #define LOG_WARN(...) ENIGMA_WARN(__VA_ARGS__)
83 #define LOG_ERROR(...) ENIGMA_ERROR(__VA_ARGS__)
84 #define LOG_CRITICAL(...) ENIGMA_CRITICAL(__VA_ARGS__)
86 #define LOG_TRACE_IF(condition, ...) \
87 if ((condition)) ENIGMA_TRACE(__VA_ARGS__);
88 #define LOG_LOG_IF(condition, ...) \
89 if ((condition)) ENIGMA_LOG(__VA_ARGS__);
90 #define LOG_INFO_IF(condition, ...) \
91 if ((condition)) ENIGMA_INFO(__VA_ARGS__);
92 #define LOG_WARN_IF(condition, ...) \
93 if ((condition)) ENIGMA_WARN(__VA_ARGS__);
94 #define LOG_ERROR_IF(condition, ...) \
95 if ((condition)) ENIGMA_ERROR(__VA_ARGS__);
96 #define LOG_CRITICAL_IF(condition, ...) \
97 if ((condition)) ENIGMA_CRITICAL(__VA_ARGS__);
#define NS_ENIGMA_BEGIN
Enable/Disable Assertions.
static const std::shared_ptr< spdlog::logger > & getLogger() noexcept