console_logger Last update: 16.07.2025 1 3 4 #pragma once 5 #include "core/logging/i_logger.h" 6 #include "core/utils/env.h" 7 #include <iostream> 8 13 namespace simulation_framework 14 { 15 namespace core 16 { 17 namespace logging 18 { 19 static const std::string kEnvVarConsoleLoggingLevel{"CONSOLE_LOGGING_LEVEL"}; 20 23 class ConsoleLogger : public ILogger 24 { 25 public: 26 virtual ~ConsoleLogger() = default; 27 28 [[nodiscard]] LogLevel GetCurrentLogLevel() const final 29 { 30 auto logging_level = utils::GetEnvironmentVariable(kEnvVarConsoleLoggingLevel); 31 return LogLevel::kTrace; 32 } 33 34 void Log(LogLevel level, std::string_view log_message) final 35 { 36 if (level < GetCurrentLogLevel()) 37 { 38 return; 39 } 40 41 switch (level) 42 { 43 case LogLevel::kDebug: 44 { 45 std::cout << "\033[33m" 46 << "[LogDebug]" << log_message << "\033[0m" << std::endl; 47 break; 48 } 49 case LogLevel::kInfo: 50 { 51 std::cout << "[LogInfo]" << log_message << std::endl; 52 break; 53 } 54 case LogLevel::kWarning: 55 { 56 std::cout << "\033[33m" 57 << "[LogWarn]" << log_message << "\033[0m" << std::endl; 58 break; 59 } 60 case LogLevel::kError: 61 { 62 std::cerr << "\033[31m" 63 << "[LogError]" << log_message << "\033[0m" << std::endl; 64 break; 65 } 66 case LogLevel::kTrace: 67 default: 68 { 69 break; 70 } 71 } 72 } 73 }; 74 75 } // namespace logging 76 } // namespace core 77 } // namespace simulation_framework