Is there a way to get logger object in consumer sample app and extract the string with errors?
@vishal.anand
You can create a custom log handler to catch log events.
import java.util.logging.Handler;import java.util.logging.Level;import java.util.logging.LogManager;import java.util.logging.Logger;...Logger rootLogger = LogManager.getLogManager().getLogger("");rootLogger.setLevel(Level.ALL);rootLogger.addHandler(new MyLogHandler());
import java.util.logging.Handler;import java.util.logging.LogRecord;public class MyLogHandler extends Handler{ @Override public void publish(LogRecord record) { // TODO Auto-generated method stub System.out.println("### Log "+record.getMessage()); } @Override public void flush() { // TODO Auto-generated method stub } @Override public void close() throws SecurityException { // TODO Auto-generated method stub } }
The output looks like this:
### Log loggerMsg ClientName: Consumer_1_1 Severity: Trace Text: Print out active configuration detail. itemCountHint: 100000 serviceCountHint: 513 requestTimeout: 15000 dispatchTimeoutApiThread: 0 maxDispatchCountApiThread: 100 maxDispatchCountUserThread: 100 userDispatch: 1 configuredName: Consumer_1 instanceName: Consumer_1_1 xmlTraceEnable: true defaultConverterServiceId: 1
Hello @vishal.anand ,
The recommended way to detect error conditions is by registering and processing status callback, and examining status codes, for instance, the text of the logged messages may improve/be modified in the future. Typically, in the consumer-generated log, the status message text is included as well as the status code, but error-handling decisions should be made based on the Status code received.
You may wish to additionally register interest in Login stream events- see example EMA Consumer 333 Login Streaming Domain, to be sure to detect forced logouts, and Source Directory events- see example 331 Directory Streaming, to be sure to detect service downs.
I do receive status message that Service is lost and do log it in the application syslog (I have different syslog for my app). I can see in the ema log to see it is retrying to connect but during this time I do not get any callbacks for any event like it is retrying to connect or doing what. Is there any way to tap into the logger and get the details so at least I can get the text and add it to my syslogs? Else I will have to monitor both Ema Logs and my application log.
The initial connection, including the repeated attempts to connect, is intended to be seamless for EMA application tier, defined in EMA configuration and fully handled by EMA API, so:
If you are looking to route EMA log to a different filename/location, configure your log file:
If you require to explicitly detect the reconnection attempts at the application tier, see ETA Consumer example in RTSDK, where application tier is responsible for establishing connectivity explicitly.