⌘K

Logging

Forward Nativeblocks SDK events to Firebase, Amplitude, PostHog, or any analytics and crash-reporting service.

Register a logger to capture SDK events and forward them to Firebase, Amplitude, PostHog, or any other service.


Implement a Logger

class AnalyticsLogger : INativeLogger {
    override fun log(
        level: LoggerEventLevel,
        event: String,
        message: String,
        parameters: Map<String, String>
    ) {
        when (level) {
            LoggerEventLevel.INFO -> {
                // Firebase Analytics
                Firebase.analytics.logEvent(event) {
                    parameters.forEach { (key, value) -> param(key, value) }
                }
                // Amplitude
                Amplitude.getInstance().logEvent(event, JSONObject(parameters))
                // PostHog
                PostHog.capture(event, properties = parameters)
            }
            LoggerEventLevel.WARNING -> {
                MyMonitoring.warn(tag = event, message = message, extra = parameters)
            }
            LoggerEventLevel.ERROR -> {
                // Crashlytics
                Crashlytics.log("[$event] $message")
                Crashlytics.setCustomKeys { parameters.forEach { (k, v) -> key(k, v) } }
            }
        }
    }
}

Register the Logger

NativeblocksManager.getInstance().provideEventLogger(
    loggerType = "ANALYTICS_LOGGER",
    logger = AnalyticsLogger()
)

Log levels

LevelWhen it fires
INFONormal lifecycle: frame loaded, block rendered, action triggered
WARNINGNon-critical issues: missing optional block, slow network response
ERRORFailures: frame not found, action crashed, network error