2828#include  < cpp_utils/time/time_utils.hpp> 
2929#include  < cpp_utils/utils.hpp> 
3030
31+ #include  < ddspipe_core/configuration/DdsPipeLogConfiguration.hpp> 
3132#include  < ddspipe_core/logging/DdsLogConsumer.hpp> 
3233#include  < ddspipe_core/monitoring/Monitor.hpp> 
3334#include  < ddspipe_core/monitoring/producers/TopicsMonitorProducer.hpp> 
@@ -47,6 +48,7 @@ using namespace eprosima;
4748using  namespace  eprosima ::ddsrouter; 
4849
4950int  exit (const  ui::ProcessReturnCode& code);
51+ void  register_log_consumers (const  ddspipe::core::DdsPipeLogConfiguration& configuration);
5052
5153int  main (
5254        int  argc,
@@ -120,6 +122,12 @@ int main(
120122                    commandline_args.timeout ));
121123        }
122124
125+         //  Register the LogConsumers with the CommandLine configuration to log the YAML configuration errors.
126+         ddspipe::core::DdsPipeLogConfiguration log_configuration;
127+         log_configuration.set (utils::VerbosityKind::Warning);
128+ 
129+         register_log_consumers (log_configuration);
130+ 
123131        // ///
124132        //  DDS Router Initialization
125133
@@ -128,37 +136,8 @@ int main(
128136                yaml::YamlReaderConfiguration::load_ddsrouter_configuration_from_file (commandline_args.file_path ,
129137                        &commandline_args);
130138
131-         //  Debug
132-         {
133-             const  auto  log_configuration = router_configuration.ddspipe_configuration .log_configuration ;
134- 
135-             //  Remove every consumer
136-             eprosima::utils::Log::ClearConsumers ();
137- 
138-             //  Activate log with verbosity, as this will avoid running log thread with not desired kind
139-             eprosima::utils::Log::SetVerbosity (log_configuration.verbosity );
140- 
141-             //  Stdout Log Consumer
142-             if  (log_configuration.stdout_enable )
143-             {
144-                 eprosima::utils::Log::RegisterConsumer (
145-                     std::make_unique<eprosima::utils::StdLogConsumer>(&log_configuration));
146-             }
147- 
148-             //  DDS Log Consumer
149-             if  (log_configuration.publish .enable )
150-             {
151-                 eprosima::utils::Log::RegisterConsumer (
152-                     std::make_unique<eprosima::ddspipe::core::DdsLogConsumer>(&log_configuration));
153-             }
154- 
155-             //  NOTE:
156-             //  It will not filter any log, so Fast DDS logs will be visible unless Fast DDS is compiled
157-             //  in non debug or with LOG_NO_INFO=ON.
158-             //  This is the easiest way to allow to see Warnings and Errors from Fast DDS.
159-             //  Change it when Log Module is independent and with more extensive API.
160-             //  eprosima::utils::Log::SetCategoryFilter(std::regex("(DDSROUTER)"));
161-         }
139+         //  Register the LogConsumers with their actual configuration
140+         register_log_consumers (router_configuration.ddspipe_configuration .log_configuration );
162141
163142        //  Load XML profiles
164143        ddspipe::participants::XmlHandler::load_xml (router_configuration.xml_configuration );
@@ -301,3 +280,33 @@ int exit(const ui::ProcessReturnCode& code)
301280
302281    return  static_cast <int >(code);
303282}
283+ 
284+ void  register_log_consumers (const  ddspipe::core::DdsPipeLogConfiguration& configuration)
285+ {
286+     //  Remove every consumer
287+     utils::Log::ClearConsumers ();
288+ 
289+     //  Activate log with verbosity, as this will avoid running log thread with not desired kind
290+     utils::Log::SetVerbosity (configuration.verbosity );
291+ 
292+     //  Stdout Log Consumer
293+     if  (configuration.stdout_enable )
294+     {
295+         utils::Log::RegisterConsumer (
296+             std::make_unique<utils::StdLogConsumer>(&configuration));
297+     }
298+ 
299+     //  DDS Log Consumer
300+     if  (configuration.publish .enable )
301+     {
302+         utils::Log::RegisterConsumer (
303+             std::make_unique<ddspipe::core::DdsLogConsumer>(&configuration));
304+     }
305+ 
306+     //  NOTE:
307+     //  It will not filter any log, so Fast DDS logs will be visible unless Fast DDS is compiled
308+     //  in non debug or with LOG_NO_INFO=ON.
309+     //  This is the easiest way to allow to see Warnings and Errors from Fast DDS.
310+     //  Change it when Log Module is independent and with more extensive API.
311+     //  utils::Log::SetCategoryFilter(std::regex("(DDSROUTER)"));
312+ }
0 commit comments