Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
Logger.hpp
Go to the documentation of this file.
1#pragma once
2
3#ifdef ES_DEBUG
4# define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG
5#else
6# define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO
7#endif
8
9#include "spdlog/spdlog.h"
10
11namespace Log {
12
22
23constexpr spdlog::level::level_enum ToSpdlogLevel(Level level) noexcept
24{
25 using enum Log::Level;
26
27 if (level == trace)
28 return spdlog::level::trace;
29 else if (level == debug)
30 return spdlog::level::debug;
31 else if (level == info)
32 return spdlog::level::info;
33 else if (level == warning)
34 return spdlog::level::warn;
35 else if (level == error)
36 return spdlog::level::err;
37 else if (level == critical)
38 return spdlog::level::critical;
39 else if (level == off)
40 return spdlog::level::off;
41 else
42 return spdlog::level::trace;
43}
44
45template <typename T> inline void Debug(const T &msg) noexcept { spdlog::debug(msg); };
46
47template <typename T> inline void Info(const T &msg) noexcept { spdlog::info(msg); };
48
49template <typename T> inline void Warning(const T &msg) noexcept { spdlog::warn(msg); };
50
51template <typename T> inline void Error(const T &msg) noexcept { spdlog::error(msg); };
52
53template <typename T> inline void Critical(const T &msg) noexcept { spdlog::critical(msg); };
54
55template <typename T> inline void Trace(const T &msg) noexcept { spdlog::trace(msg); };
56
57template <typename T> inline void Log(Level level, const T &msg) noexcept
58{
59 using enum Log::Level;
60
61 if (level == info)
62 Log::Info(msg);
63 else if (level == warning)
64 Log::Warning(msg);
65 else if (level == error)
66 Log::Error(msg);
67 else if (level == critical)
68 Log::Critical(msg);
69 else if (level == debug)
70 Log::Debug(msg);
71 else if (level == off)
72 return;
73 else
74 Log::Trace(msg);
75};
76
77inline void SetLevel(Level level) { spdlog::set_level(ToSpdlogLevel(level)); };
78
79inline void SetPattern(const std::string &pattern,
80 spdlog::pattern_time_type time_type = spdlog::pattern_time_type::local)
81{
82 spdlog::set_pattern(pattern, time_type);
83};
84} // namespace Log
Definition EntityToIDString.hpp:7
void Warning(const T &msg) noexcept
Definition Logger.hpp:49
void Info(const T &msg) noexcept
Definition Logger.hpp:47
void SetLevel(Level level)
Definition Logger.hpp:77
void Error(const T &msg) noexcept
Definition Logger.hpp:51
void Trace(const T &msg) noexcept
Definition Logger.hpp:55
void Debug(const T &msg) noexcept
Definition Logger.hpp:45
void Critical(const T &msg) noexcept
Definition Logger.hpp:53
constexpr spdlog::level::level_enum ToSpdlogLevel(Level level) noexcept
Definition Logger.hpp:23
void SetPattern(const std::string &pattern, spdlog::pattern_time_type time_type=spdlog::pattern_time_type::local)
Definition Logger.hpp:79
Level
Definition Logger.hpp:13
@ trace
Definition Logger.hpp:14
@ off
Definition Logger.hpp:20
@ warning
Definition Logger.hpp:17
@ critical
Definition Logger.hpp:19
@ debug
Definition Logger.hpp:15
@ info
Definition Logger.hpp:16
@ error
Definition Logger.hpp:18