log

open fun log(level: LogLevel, category: LogCategory, message: String, throwable: Throwable?, attributes: Map<String, Any?>)

As LogSink.log, plus structured key-value context for this log line (e.g. "http.status_code" to 503, "kenwork.endpoint_id" to "videos/:id"). Values are left as Any? rather than String so a bridge can pass them through to a structured logging API's native attribute types without stringifying first.