Logger.cpp 1017 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "Logger.h"
  2. #include <Windows.h>
  3. #include <iostream>
  4. #include <chrono>
  5. #include <cstdarg>
  6. #include <fstream>
  7. #include <filesystem>
  8. struct Prefix {
  9. char color;
  10. const char* text;
  11. };
  12. Prefix getLevelPrefix(Logger::Level level) {
  13. switch (level) {
  14. case Logger::Level::Error:
  15. return { 0x0C, "Error" };
  16. case Logger::Level::Warning:
  17. return { 0x06, "Warning" };
  18. case Logger::Level::Info:
  19. return { 0x02, "Info" };
  20. case Logger::Level::Debug:
  21. return { 0x0B, "Debug" };
  22. default:
  23. return { 0x00, "" };
  24. }
  25. }
  26. void Logger::log(Logger::Level logLevel, const char* format, ...) {
  27. char buffer[4096];
  28. va_list args;
  29. va_start(args, format);
  30. vsprintf_s(buffer, format, args);
  31. va_end(args);
  32. auto prefix = getLevelPrefix(logLevel);
  33. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  34. SetConsoleTextAttribute(hConsole, 15);
  35. std::cout << "[Minty:";
  36. SetConsoleTextAttribute(hConsole, prefix.color);
  37. std::cout << prefix.text;
  38. SetConsoleTextAttribute(hConsole, 15);
  39. std::cout << "] " << buffer << "\n";
  40. }