Zen 0.3.0
Loading...
Searching...
No Matches
ZEN_Log.h
1#pragma once
2
3#include <spdlog/sinks/basic_file_sink.h>
4#include <spdlog/sinks/stdout_color_sinks.h>
5#include <spdlog/spdlog.h>
6
7namespace Zen {
8 // spdlog wrapper
9 class Log {
10 public:
11 static void init();
12
13 template <typename... Args> static void trace(fmt::format_string<Args...> fmt, Args &&...args) {
14 spdlog::trace(fmt, std::forward<Args>(args)...);
15 // SPDLOG_TRACE(std::forward<Args>(args)...);
16 }
17
18 template <typename... Args> static void debug(fmt::format_string<Args...> fmt, Args &&...args) {
19 spdlog::debug(fmt, std::forward<Args>(args)...);
20 // SPDLOG_DEBUG(std::forward<Args>(args)...);
21 }
22
23 template <typename... Args> static void info(fmt::format_string<Args...> fmt, Args &&...args) {
24 spdlog::info(fmt, std::forward<Args>(args)...);
25 // SPDLOG_INFO(std::forward<Args>(args)...);
26 }
27
28 template <typename... Args> static void warn(fmt::format_string<Args...> fmt, Args &&...args) {
29 spdlog::warn(fmt, std::forward<Args>(args)...);
30 // SPDLOG_WARN(std::forward<Args>(args)...);
31 }
32
33 template <typename... Args> static void error(fmt::format_string<Args...> fmt, Args &&...args) {
34 spdlog::error(fmt, std::forward<Args>(args)...);
35 // SPDLOG_ERROR(std::forward<Args>(args)...);
36 }
37
38 template <typename... Args>
39 static void critical(fmt::format_string<Args...> fmt, Args &&...args) {
40 spdlog::critical(fmt, std::forward<Args>(args)...);
41 // SPDLOG_CRITICAL(std::forward<Args>(args)...);
42 }
43 };
44
45#define ZEN_LOG_TRACE(...) Zen::Log::trace(__VA_ARGS__) // spdlog::trace(fmt)
46#define ZEN_LOG_DEBUG(...) Zen::Log::debug(__VA_ARGS__) // spdlog::debug(fmt)
47#define ZEN_LOG_INFO(...) Zen::Log::info(__VA_ARGS__) // spdlog::info(fmt)
48#define ZEN_LOG_WARN(...) Zen::Log::warn(__VA_ARGS__) // spdlog::warn(fmt)
49#define ZEN_LOG_ERROR(...) Zen::Log::error(__VA_ARGS__) // spdlog::error(__VA_ARGS__)
50#define ZEN_LOG_CRITICAL(...) Zen::Log::critical(__VA_ARGS__) // spdlog::critical(fmt)
51#define ZEN_ASSERT_LOG(cond, msg, ...) \
52 do { \
53 if (!(cond)) { \
54 LOG_CRITICAL("Assertion failed:\n expr : {}\n msg : " msg "\n loc : {}:{}", \
55 #cond, \
56 ##__VA_ARGS__, \
57 __FILE__, \
58 __LINE__); \
59 std::abort(); \
60 } \
61 } while (0)
62
63}; // namespace Zen