RemoteLogSink

class RemoteLogSink(logFormatter: LogEventFormatter = LogFormatters.json(false), send: (String) -> Unit) : LogSink(source)

A LogSink that sends log events to a remote destination via a provided send function.

This can be used to integrate with custom HTTP backends, message queues, or any other remote logging service.

Example: Firebase Crashlytics Sink

class FirebaseLogSink(
private val minLevel: LogLevel = LogLevel.WARN,
private val formatter: LogEventFormatter = LogFormatters.json(false)
) : LogSink {
override fun emit(event: LogEvent) {
if (event.level < minLevel) return

val message = formatter.format(event)
// FirebaseCrashlytics.getInstance().log(message)

if (event.level >= LogLevel.ERROR) {
// FirebaseCrashlytics.getInstance().recordException(
// event.throwable ?: RuntimeException(message)
// )
}
}
}

Example: Facebook App Events Sink

class FacebookLogSink : LogSink {
override fun emit(event: LogEvent) {
// Map LogEvent to Facebook App Event parameters
val params = Bundle().apply {
putString("level", event.level.name)
putString("logger", event.loggerName)
event.message?.let { putString("message", it.take(100)) }

// Add custom attributes
event.attributes.forEach { (k, v) ->
putString("attr_$k", v?.toString()?.take(100))
}
}

val eventName = "log_${event.level.name.lowercase()}"
// appEventsLogger.logEvent(eventName, params)
}
}

Constructors

Link copied to clipboard
constructor(logFormatter: LogEventFormatter = LogFormatters.json(false), send: (String) -> Unit)

Functions

Link copied to clipboard
open override fun emit(event: LogEvent)

Emits a log event to the output destination.

Link copied to clipboard
open fun flush()

Flushes any buffered log events. Called automatically when a FATAL log occurs or during shutdown.