Files
BloomPatched/src/Logger/Logger.hpp

68 lines
1.7 KiB
C++
Raw Normal View History

2021-04-04 21:04:12 +01:00
#pragma once
2022-06-18 14:36:39 +01:00
#include <cstdint>
2021-04-04 21:04:12 +01:00
#include <string>
#include <mutex>
#include <source_location>
#include <optional>
2021-04-04 21:04:12 +01:00
#include "src/ProjectConfig.hpp"
#include "src/Services/DateTimeService.hpp"
2021-04-04 21:04:12 +01:00
enum class LogLevel: std::uint8_t
2021-04-04 21:04:12 +01:00
{
INFO,
WARNING,
ERROR,
DEBUG,
};
2022-06-18 14:36:39 +01:00
/**
* Super simple thread safe static Logger class for basic logging.
*/
class Logger
{
public:
static void configure(const ProjectConfig& projectConfig);
2021-04-04 21:04:12 +01:00
static void silence();
2021-04-04 21:04:12 +01:00
static void info(const std::string& message) {
if (Logger::infoPrintingEnabled) {
Logger::log(message, LogLevel::INFO, std::nullopt);
2021-04-04 21:04:12 +01:00
}
}
2021-04-04 21:04:12 +01:00
static void warning(const std::string& message) {
if (Logger::warningPrintingEnabled) {
Logger::log(message, LogLevel::WARNING, std::nullopt);
2021-04-04 21:04:12 +01:00
}
}
2021-04-04 21:04:12 +01:00
static void error(const std::string& message) {
if (Logger::errorPrintingEnabled) {
Logger::log(message, LogLevel::ERROR, std::nullopt);
2021-04-04 21:04:12 +01:00
}
}
2021-04-04 21:04:12 +01:00
static void debug(
const std::string& message,
const std::source_location sourceLocation = std::source_location::current()
) {
if (Logger::debugPrintingEnabled) {
Logger::log(message, LogLevel::DEBUG, sourceLocation);
2021-04-04 21:04:12 +01:00
}
}
2021-04-04 21:04:12 +01:00
private:
static inline bool errorPrintingEnabled = true;
static inline bool warningPrintingEnabled = true;
static inline bool infoPrintingEnabled = true;
static inline bool debugPrintingEnabled = false;
static inline std::mutex printMutex;
static void log(const std::string& message, LogLevel level, std::optional<std::source_location> sourceLocation);
static const std::string& threadName();
};