    

 ## On this page

  

 

 # console\_logger

 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 \#include "core/logging/i\_logger.h"

<a name="l00006"></a> 6 \#include "core/utils/env.h"

<a name="l00007"></a> 7 \#include &lt;iostream&gt;

<a name="l00008"></a> 8 

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

<a name="l00014"></a> 14 {

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

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

<a name="l00017"></a> 17 namespace logging

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

<a name="l00019"></a> 19 static const std::string kEnvVarConsoleLoggingLevel{"CONSOLE\_LOGGING\_LEVEL"};

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

<a name="l00023"></a>[ 23](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml) class [ConsoleLogger](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml) : public [ILogger](classsimulation__framework_1_1core_1_1logging_1_1ILogger.xhtml)

<a name="l00024"></a> 24 {

<a name="l00025"></a> 25 public:

<a name="l00026"></a> 26 virtual ~[ConsoleLogger](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml)() = default;

<a name="l00027"></a> 27 

<a name="l00028"></a>[ 28](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml#a5fa0554c57b1663845e43bd72bd7f483) [[nodiscard]] LogLevel [GetCurrentLogLevel](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml#a5fa0554c57b1663845e43bd72bd7f483)() const final

<a name="l00029"></a> 29 {

<a name="l00030"></a> 30 auto logging_level = utils::GetEnvironmentVariable(kEnvVarConsoleLoggingLevel);

<a name="l00031"></a> 31 return LogLevel::kTrace;

<a name="l00032"></a> 32 }

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

<a name="l00034"></a>[ 34](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml#a9d2ff51ab9e4e3b050fc243b55f03fb7) void [Log](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml#a9d2ff51ab9e4e3b050fc243b55f03fb7)(LogLevel level, std::string_view log_message) final

<a name="l00035"></a> 35 {

<a name="l00036"></a> 36 if (level &lt; [GetCurrentLogLevel](classsimulation__framework_1_1core_1_1logging_1_1ConsoleLogger.xhtml#a5fa0554c57b1663845e43bd72bd7f483)())

<a name="l00037"></a> 37 {

<a name="l00038"></a> 38 return;

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

<a name="l00040"></a> 40 

<a name="l00041"></a> 41 switch (level)

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

<a name="l00043"></a> 43 case LogLevel::kDebug:

<a name="l00044"></a> 44 {

<a name="l00045"></a> 45 std::cout &lt;&lt; "\\033\[33m"

<a name="l00046"></a> 46 &lt;&lt; "\[LogDebug\]" &lt;&lt; log_message &lt;&lt; "\\033\[0m" &lt;&lt; std::endl;

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

<a name="l00048"></a> 48 }

<a name="l00049"></a> 49 case LogLevel::kInfo:

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

<a name="l00051"></a> 51 std::cout &lt;&lt; "\[LogInfo\]" &lt;&lt; log_message &lt;&lt; std::endl;

<a name="l00052"></a> 52 break;

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

<a name="l00054"></a> 54 case LogLevel::kWarning:

<a name="l00055"></a> 55 {

<a name="l00056"></a> 56 std::cout &lt;&lt; "\\033\[33m"

<a name="l00057"></a> 57 &lt;&lt; "\[LogWarn\]" &lt;&lt; log_message &lt;&lt; "\\033\[0m" &lt;&lt; std::endl;

<a name="l00058"></a> 58 break;

<a name="l00059"></a> 59 }

<a name="l00060"></a> 60 case LogLevel::kError:

<a name="l00061"></a> 61 {

<a name="l00062"></a> 62 std::cerr &lt;&lt; "\\033\[31m"

<a name="l00063"></a> 63 &lt;&lt; "\[LogError\]" &lt;&lt; log_message &lt;&lt; "\\033\[0m" &lt;&lt; std::endl;

<a name="l00064"></a> 64 break;

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

<a name="l00066"></a> 66 case LogLevel::kTrace:

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

<a name="l00068"></a> 68 {

<a name="l00069"></a> 69 break;

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

<a name="l00071"></a> 71 }

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

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

<a name="l00074"></a> 74 

<a name="l00075"></a> 75 } // namespace logging

<a name="l00076"></a> 76 } // namespace core

<a name="l00077"></a> 77 } // namespace simulation\_framework