#pragma once
#include <string>

class Logger {
public:
	static void Log(std::string);
	static void Info(std::string);
	static void Debug(std::string);
	static void Warn(std::string);
	static void Error(std::string);
	enum class Levels { All, Log, Info, Warning, Error, None };
	static void SetMaxLoggingLevel(Levels);
	static void SetDebugMode(bool);
private:
	static bool debugEnabled;
	static Levels loggingLevel;
	static void dispatchLog(Levels, std::string, bool);
	static std::string getTimestamp();
	static std::string getMessageType(Levels, bool);
	static void log(std::string, std::string);
	static void logError(std::string, std::string);
};