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
13enum class Level {
14 trace = spdlog::level::level_enum::trace,
15 debug = spdlog::level::level_enum::debug,
16 info = spdlog::level::level_enum::info,
17 warning = spdlog::level::level_enum::warn,
18 error = spdlog::level::level_enum::err,
19 critical = spdlog::level::level_enum::critical,
20 off = spdlog::level::level_enum::off,
21};
22
23constexpr spdlog::level::level_enum ToSpdlogLevel(Level level) noexcept
24{
25 return static_cast<spdlog::level::level_enum>(level);
26}
27
28template <typename T> inline void Debug(const T &msg) noexcept(false) { spdlog::debug(msg); };
29
30template <typename T> inline void Info(const T &msg) noexcept(false) { spdlog::info(msg); };
31
32template <typename T> inline void Warning(const T &msg) noexcept(false) { spdlog::warn(msg); };
33
34template <typename T> inline void Error(const T &msg) noexcept(false) { spdlog::error(msg); };
35
36template <typename T> inline void Critical(const T &msg) noexcept(false) { spdlog::critical(msg); };
37
38template <typename T> inline void Trace(const T &msg) noexcept(false) { spdlog::trace(msg); };
39
40template <typename T> inline void Log(Level level, const T &msg) noexcept(false)
41{
42 using enum Log::Level;
43
44 if (level == info)
45 Log::Info(msg);
46 else if (level == warning)
47 Log::Warning(msg);
48 else if (level == error)
49 Log::Error(msg);
50 else if (level == critical)
51 Log::Critical(msg);
52 else if (level == debug)
53 Log::Debug(msg);
54 else if (level == off)
55 return;
56 else
57 Log::Trace(msg);
58};
59
60inline void SetLevel(Level level) { spdlog::set_level(ToSpdlogLevel(level)); };
61
62inline void SetPattern(const std::string &pattern,
63 spdlog::pattern_time_type time_type = spdlog::pattern_time_type::local)
64{
65 spdlog::set_pattern(pattern, time_type);
66};
67} // namespace Log
Definition EntityToIDString.hpp:7
void SetLevel(Level level)
Definition Logger.hpp:60
void Critical(const T &msg) noexcept(false)
Definition Logger.hpp:36
void Info(const T &msg) noexcept(false)
Definition Logger.hpp:30
constexpr spdlog::level::level_enum ToSpdlogLevel(Level level) noexcept
Definition Logger.hpp:23
void Debug(const T &msg) noexcept(false)
Definition Logger.hpp:28
void Error(const T &msg) noexcept(false)
Definition Logger.hpp:34
void Trace(const T &msg) noexcept(false)
Definition Logger.hpp:38
void SetPattern(const std::string &pattern, spdlog::pattern_time_type time_type=spdlog::pattern_time_type::local)
Definition Logger.hpp:62
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
void Warning(const T &msg) noexcept(false)
Definition Logger.hpp:32