#pragma once #include "logging/logger.hpp" #include #include namespace kuiper { /// @brief Singleton class providing engine-wide logging facilities class engine_logger { private: engine_logger() = default; public: ~engine_logger() = default; public: static inline engine_logger& get(void) { static engine_logger s_instance; return s_instance; } template inline void trace(std::format_string fmt, Args... args) { m_log.trace(fmt, std::forward(args)...); } template inline void debug(std::format_string fmt, Args... args) { m_log.debug(fmt, std::forward(args)...); } template inline void info(std::format_string fmt, Args... args) { m_log.info(fmt, std::forward(args)...); } template inline void warn(std::format_string fmt, Args... args) { m_log.warn(fmt, std::forward(args)...); } template inline void error(std::format_string fmt, Args... args) { m_log.error(fmt, std::forward(args)...); } template inline void critical(std::format_string fmt, Args... args) { m_log.critical(fmt, std::forward(args)...); } private: kuiper::logger m_log {"engine"}; }; } // namespace kuiper