Skip to main content

AVxcelerate Simulation Framework 2025 R1

logging

Last update: 16.07.2025
1 
3 
4 #pragma once
5 
6 #include "core/logging/console_logger.h"
7 #include "core/logging/i_logger.h"
8 #include <memory>
9 #include <vector>
10 
15 namespace simulation_framework
16 {
17 namespace core
18 {
19 namespace logging
20 {
21 
28 {
29  public:
30  using ILoggerContainer = std::vector<std::unique_ptr<ILogger>>;
31 
32  virtual ~LoggingInstance() = default;
33 
34  LoggingInstance(const LoggingInstance&) = delete;
35  LoggingInstance& operator=(const LoggingInstance&) = delete;
36 
39  {
40  static LoggingInstance log_instance = LoggingInstance();
41  return log_instance;
42  }
43 
46  void RegisterLogger(std::unique_ptr<ILogger> logger) { loggers_.push_back(std::move(logger)); }
47 
49  void ClearLoggers() { loggers_.clear(); }
50 
52  const ILoggerContainer& GetLoggers() const { return loggers_; }
53 
57  void Log(LogLevel level, std::string_view message)
58  {
59  for (const auto& logger : loggers_)
60  {
61  if (logger)
62  {
63  logger->Log(level, message);
64  }
65  }
66  }
67 
68  private:
69  LoggingInstance() { RegisterLogger(std::make_unique<simulation_framework::core::logging::ConsoleLogger>()); };
70 
71  ILoggerContainer loggers_;
72 };
73 
77 static inline void Trace(std::string_view message) noexcept
78 {
79  LoggingInstance::GetInstance().Log(LogLevel::kTrace, message);
80 }
81 
85 static inline void Debug(std::string_view message) noexcept
86 {
87  LoggingInstance::GetInstance().Log(LogLevel::kDebug, message);
88 }
89 
93 static inline void Info(std::string_view message) noexcept
94 {
95  LoggingInstance::GetInstance().Log(LogLevel::kInfo, message);
96 }
97 
101 static inline void Warning(std::string_view message) noexcept
102 {
103  LoggingInstance::GetInstance().Log(LogLevel::kWarning, message);
104 }
105 
109 static inline void Error(std::string_view message) noexcept
110 {
111  LoggingInstance::GetInstance().Log(LogLevel::kError, message);
112 }
113 
114 } // namespace logging
115 } // namespace core
116 } // namespace simulation_framework

Connect with Ansys