    

 ## On this page

  

 

 # logging

 Last update: 16.07.2025 

<a name="l00001"></a> 1 

<a name="l00003"></a> 3 

<a name="l00004"></a> 4 \#pragma once

<a name="l00005"></a> 5 

<a name="l00006"></a> 6 \#include "core/logging/console\_logger.h"

<a name="l00007"></a> 7 \#include "core/logging/i\_logger.h"

<a name="l00008"></a> 8 \#include &lt;memory&gt;

<a name="l00009"></a> 9 \#include &lt;vector&gt;

<a name="l00010"></a> 10 

<a name="l00015"></a> 15 namespace [simulation\_framework](namespacesimulation__framework.xhtml)

<a name="l00016"></a> 16 {

<a name="l00017"></a> 17 namespace [core](namespacecore.xhtml)

<a name="l00018"></a> 18 {

<a name="l00019"></a> 19 namespace logging

<a name="l00020"></a> 20 {

<a name="l00021"></a> 21 

<a name="l00027"></a>[ 27](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml) class [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)

<a name="l00028"></a> 28 {

<a name="l00029"></a> 29 public:

<a name="l00030"></a> 30 using ILoggerContainer = std::vector&lt;std::unique_ptr&lt;ILogger&gt;&gt;;

<a name="l00031"></a> 31 

<a name="l00032"></a> 32 virtual ~[LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)() = default;

<a name="l00033"></a> 33 

<a name="l00034"></a> 34 [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)(const [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)&amp;) = delete;

<a name="l00035"></a> 35 [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)&amp; operator=(const [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)&amp;) = delete;

<a name="l00036"></a> 36 

<a name="l00038"></a>[ 38](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae) static [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)&amp; [GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)()

<a name="l00039"></a> 39 {

<a name="l00040"></a> 40 static [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml) log_instance = [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)();

<a name="l00041"></a> 41 return log_instance;

<a name="l00042"></a> 42 }

<a name="l00043"></a> 43 

<a name="l00046"></a>[ 46](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#ac2a261893f38c22e6a86d333e7a93644) void [RegisterLogger](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#ac2a261893f38c22e6a86d333e7a93644)(std::unique_ptr&lt;ILogger&gt; logger) { loggers_.push_back(std::move(logger)); }

<a name="l00047"></a> 47 

<a name="l00049"></a>[ 49](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a8d0242626303b56597a921397ccf0313) void [ClearLoggers](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a8d0242626303b56597a921397ccf0313)() { loggers_.clear(); }

<a name="l00050"></a> 50 

<a name="l00052"></a>[ 52](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#abf601a48f52be733da2d4b58a505eca2) const ILoggerContainer&amp; [GetLoggers](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#abf601a48f52be733da2d4b58a505eca2)() const { return loggers_; }

<a name="l00053"></a> 53 

<a name="l00057"></a>[ 57](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525) void [Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel level, std::string_view message)

<a name="l00058"></a> 58 {

<a name="l00059"></a> 59 for (const auto&amp; logger : loggers_)

<a name="l00060"></a> 60 {

<a name="l00061"></a> 61 if (logger)

<a name="l00062"></a> 62 {

<a name="l00063"></a> 63 logger-&gt;Log(level, message);

<a name="l00064"></a> 64 }

<a name="l00065"></a> 65 }

<a name="l00066"></a> 66 }

<a name="l00067"></a> 67 

<a name="l00068"></a> 68 private:

<a name="l00069"></a> 69 [LoggingInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml)() { [RegisterLogger](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#ac2a261893f38c22e6a86d333e7a93644)(std::make_unique&lt;simulation_framework::core::logging::ConsoleLogger&gt;()); };

<a name="l00070"></a> 70 

<a name="l00071"></a> 71 ILoggerContainer loggers_;

<a name="l00072"></a> 72 };

<a name="l00073"></a> 73 

<a name="l00077"></a> 77 static inline void Trace(std::string_view message) noexcept

<a name="l00078"></a> 78 {

<a name="l00079"></a> 79 [LoggingInstance::GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)().[Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel::kTrace, message);

<a name="l00080"></a> 80 }

<a name="l00081"></a> 81 

<a name="l00085"></a> 85 static inline void Debug(std::string_view message) noexcept

<a name="l00086"></a> 86 {

<a name="l00087"></a> 87 [LoggingInstance::GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)().[Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel::kDebug, message);

<a name="l00088"></a> 88 }

<a name="l00089"></a> 89 

<a name="l00093"></a> 93 static inline void Info(std::string_view message) noexcept

<a name="l00094"></a> 94 {

<a name="l00095"></a> 95 [LoggingInstance::GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)().[Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel::kInfo, message);

<a name="l00096"></a> 96 }

<a name="l00097"></a> 97 

<a name="l00101"></a> 101 static inline void Warning(std::string_view message) noexcept

<a name="l00102"></a> 102 {

<a name="l00103"></a> 103 [LoggingInstance::GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)().[Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel::kWarning, message);

<a name="l00104"></a> 104 }

<a name="l00105"></a> 105 

<a name="l00109"></a> 109 static inline void Error(std::string_view message) noexcept

<a name="l00110"></a> 110 {

<a name="l00111"></a> 111 [LoggingInstance::GetInstance](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a574b6c40487e6cde5098630c1a76b9ae)().[Log](classsimulation__framework_1_1core_1_1logging_1_1LoggingInstance.xhtml#a2536343b1dc6df11fa67321a4e41e525)(LogLevel::kError, message);

<a name="l00112"></a> 112 }

<a name="l00113"></a> 113 

<a name="l00114"></a> 114 } // namespace logging

<a name="l00115"></a> 115 } // namespace core

<a name="l00116"></a> 116 } // namespace simulation\_framework