Program Listing for File Logger.hpp¶
↰ Return to documentation for file (gui/logging/Logger.hpp)
#pragma once
#include <cstdint>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <sstream>
#include <string>
enum class LogLevel : std::uint8_t {
DEBUG,
INFO,
WARN,
CRIT
};
enum class LogType : std::uint8_t {
JSON,
SIMPLE
};
using LogSettings = struct log_settings {
LogLevel filter;
LogType type;
};
class LogStream {
public:
static LogSettings SETTINGS;
LogStream(LogLevel level, const char *file, int line);
~LogStream();
template <typename T> auto operator<<(const T &val) -> LogStream &
{
_ss << val;
return *this;
}
void flush();
static auto log(LogLevel lvl, const char *file, int line) -> LogStream;
static void
logger_configure(const std::string &log_path, LogLevel level, LogType type);
static std::string cleanString(std::string str);
private:
LogLevel _level;
const char *_file;
int _line;
std::ostringstream _ss;
};
class Log : public LogStream {};
#define debug log(LogLevel::DEBUG, __FILE__, __LINE__)
#define inf log(LogLevel::INFO, __FILE__, __LINE__)
#define warn log(LogLevel::WARN, __FILE__, __LINE__)
#define failed log(LogLevel::CRIT, __FILE__, __LINE__)