OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
logger.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <string>
8#include <unordered_map>
9#include <fstream>
10
11#ifdef SOURCE_ROOT
12 #define RELATIVE_FILE (__FILE__ + sizeof(SOURCE_ROOT) - 1)
13#else
14 #define RELATIVE_FILE __FILE__
15#endif
16
18#define LOG_INFO(msg) Engine::Core::Logger::Instance().Log(msg, Engine::Core::LogLevel::LOG_INFO, RELATIVE_FILE, __LINE__, __func__)
20#define LOG_WARNING(msg) Engine::Core::Logger::Instance().Log(msg, Engine::Core::LogLevel::LOG_WARNING, RELATIVE_FILE, __LINE__, __func__)
22#define LOG_ERROR(msg) Engine::Core::Logger::Instance().Log(msg, Engine::Core::LogLevel::LOG_ERROR, RELATIVE_FILE, __LINE__, __func__)
24#define LOG_FATAL(msg) Engine::Core::Logger::Instance().Log(msg, Engine::Core::LogLevel::LOG_FATAL, RELATIVE_FILE, __LINE__, __func__)
26#if defined(NDEBUG)
27 #define LOG_DEBUG(msg) do {} while (0)
28#else
29 #define LOG_DEBUG(msg) Engine::Core::Logger::Instance().Log(msg, Engine::Core::LogLevel::LOG_DEBUG, RELATIVE_FILE, __LINE__, __func__)
30#endif
31
32namespace Engine::Core {
41
46 class Logger {
47 private:
48 Logger();
49 ~Logger();
50
52 std::ofstream mLogFile;
53
54 public:
60 static Logger& Instance();
70 void Log(const std::string& message, LogLevel level = LogLevel::LOG_INFO, const char *file = "", int line = 0, const char *func = "");
71
79 std::ostream& Stream();
80 };
81
89 inline const char* LogLevelToString(LogLevel level) {
90 switch (level) {
91 case LogLevel::LOG_DEBUG: return "DEBUG";
92 case LogLevel::LOG_INFO: return "INFO";
93 case LogLevel::LOG_WARNING: return "WARNING";
94 case LogLevel::LOG_ERROR: return "ERROR";
95 case LogLevel::LOG_FATAL: return "FATAL";
96 default: return "UNKNOWN";
97 }
98 }
99}
std::ostream & Stream()
Renvoie un stream vers le fichier de log actuellement ouvert.
Definition logger.cpp:20
void Log(const std::string &message, LogLevel level=LogLevel::LOG_INFO, const char *file="", int line=0, const char *func="")
Envoie un message de log dans la console, et dans le fichier ouvert.
Definition logger.cpp:28
static Logger & Instance()
Renvoie l'instance du singleton Logger.
Definition logger.cpp:15
Definition event.cpp:3
const char * LogLevelToString(LogLevel level)
Fonction utilitaire qui revnoie une string associé à un niveau de log Utile pour afficher la sévérité...
Definition logger.hpp:89
LogLevel
Enumération qui définit les types de logs à disposition.
Definition logger.hpp:34
@ LOG_INFO
Definition logger.hpp:36
@ LOG_ERROR
Definition logger.hpp:38
@ LOG_FATAL
Definition logger.hpp:39
@ LOG_WARNING
Definition logger.hpp:37
@ LOG_DEBUG
Definition logger.hpp:35