EMA programmatic configuration

Map config, map;
ElementList elements;

elements.addAscii ("DefaultConsumer", "Consumer_1");
map.addKeyAscii ("Consumer_1", MapEntry::AddEnum,
ElementList ().addAscii ("Logger", "Logger_1")
.complete ()).complete();
elements.addMap ("ConsumerList", map).complete ();
map.clear ();


config.addKeyAscii ("ConsumerGroup", MapEntry::AddEnum, elements);
elements.clear ();

map.addKeyAscii ("Logger_1", MapEntry::AddEnum,
ElementList ().addEnum ("LoggerType", 1) // stdout
.addEnum ("LoggerSeverity", 3) // errors
.complete ())
.complete ();
elements.addMap ("LoggerList", map).complete ();
map.clear ();
config.addKeyAscii ("LoggerGroup", MapEntry::AddEnum, elements).complete ();

OmmConsumer consumer (OmmConsumerConfig ().username (user.c_str ())
.host (source.c_str ())
.config (config));

I would like to configure the EMA logger to output errors only and to stdout. However the code above causes the logger to output (to stdout) that it there is no logger configuration and defaults will be used - error see below.

Modifying the config to output to file, correctly outputs to file but error persists, albeit in the output file.

Can anyone say why the error below is logged?

The code above is a modified version of the EMA sample 421_MarketPrice_ProgrammaticConfig.

loggerMsg
TimeStamp: ...
ClientName: EmaConfig
Severity: Error
Text: no configuration exists for consumer logger [LoggerGroup|LoggerList|Logger.Logger_1|]; will use logger defaults
loggerMsgEnd


Best Answer

  • @marketdata

    EMA prints this log message because it could not find Logger_1 from the EmaConfig.xml file. This is the current behavior that EMA prints out log message when EMA could not find parameters from EMAConfig.xml

    The programmatic configuration should still work correctly, even though this error is generated. You can refer to this question.

Answers

  • Thanks for your answer.

    Given my application works fine without a config file and only outputs an complains about the missing config file when the logger configuration is programmatically modified, I think this behaviour should be marked as a bug to be fixed.