question

Upvotes
Accepted
3 1 6 9

Logger EMA consumer

Is there a way to get logger object in consumer sample app and extract the string with errors?

ema-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
49.4k 123 44 61

@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
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
30k 34 11 17

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.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

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.

Upvote
30k 34 11 17

Hello @vishal.anand ,

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:

emalloggerparams.gif

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.



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.