Skip to main content

AVxcelerate Simulation Framework 2025 R1

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

Connect with Ansys