lib/src/main/java/com/ibm/mobilefirstplatform/clientsdk/android/logger/api/LogPersister.java
public static void doLog(final Logger.LEVEL calledLevel, String message, final long timestamp, final Throwable t, JSONObject additionalMetadata, final String loggerName, final boolean isInternalLogger, final Object loggerObject) {
        // we do this outside of the thread, otherwise we can't find the caller to attach the call stack metadata
        JSONObject metadata = appendStackMetadata(additionalMetadata);

        ThreadPoolWorkQueue.execute(new DoLogRunnable(calledLevel, message, timestamp, metadata, t, loggerName, isInternalLogger, loggerObject));
    }
public static void doLog(final Logger.LEVEL calledLevel, String message, final long timestamp, final Throwable t, JSONObject additionalMetadata, final String loggerName, final boolean isInternalLogger, final Object loggerObject) {
        // we do this outside of the thread, otherwise we can't find the caller to attach the call stack metadata
        JSONObject metadata = appendStackMetadata(additionalMetadata);

        ThreadPoolWorkQueue.execute(new DoLogRunnable(calledLevel, message, timestamp, metadata, t, loggerName, isInternalLogger, loggerObject));
    }
@exclude

All log calls flow through here.  Use this method when you want to control the timestamp, attach additional metadata,
and attach a Throwable's call stack to the log output.

@param calledLevel specify the Logger.LEVEL (a null parameter results in no log entry)
@param message (optional) the data for the log entry
@param timestamp the number of milliseconds since January 1, 1970, 00:00:00 GMT
@param t (optional) an Exception or Throwable, may be null