src/main/java/com/arpnetworking/steno/Logger.java
public void info(
            @Nullable final String event,
            @Nullable final String message,
            @Nullable final Map<String, Object> data,
            @Nullable final Throwable throwable) {
        if (getSlf4jLogger().isInfoEnabled()) {
            LogLevel.INFO.log(
                    getSlf4jLogger(),
                    event,
                    createKeysFromCollection(
                            data == null ? Collections.emptyList() : data.keySet(),
                            MESSAGE_DATA_KEY),
                    createValuesFromCollection(
                            data == null ? Collections.emptyList() : data.values(),
                            message),
                    throwable);
        }
    }
public void info(
            @Nullable final String event,
            @Nullable final String message,
            @Nullable final Map<String, Object> data,
            @Nullable final Throwable throwable) {
        if (getSlf4jLogger().isInfoEnabled()) {
            LogLevel.INFO.log(
                    getSlf4jLogger(),
                    event,
                    createKeysFromCollection(
                            data == null ? Collections.emptyList() : data.keySet(),
                            MESSAGE_DATA_KEY),
                    createValuesFromCollection(
                            data == null ? Collections.emptyList() : data.values(),
                            message),
                    throwable);
        }
    }
Log a message for a canonical event with supporting key-value pairs at
the info level.

@since 1.3.0

@param event The canonical event that occurred.
@param message The message to be logged.
@param data Map of data key-value pairs.
@param throwable The exception (<code>Throwable</code>) to be logged.