capture
Map event to a LogRecord and export it.
Returns the exporter's ExportResult, or null if event was dropped before any record was built — because its loggerName is one of the exporter's own (us.tractat.kuilt.otel) loggers (the self-capture exclusion above), because it was below CaptureConfig.minLevel, or because the trace gate dropped it: when a TraceContextProvider is wired, an active-but-unsampled trace is dropped, and an untraced event is dropped when CaptureConfig.untracedPolicy is UntracedPolicy.DROP. On a sampled trace the record is stamped with the trace's traceId/spanId.
The gate reads event's pre-resolved NormalizedLogEvent.activeTrace, and the record's attributes come from its pre-resolved NormalizedLogEvent.resolvedAttributes — both snapshotted at the synchronous edge via resolveAtEdge. Neither the trace provider nor the attribute mapper is consulted from this drain-side path, so ambient state that only exists on the caller is honoured (#1034, #1630).
The one exception is a caller that invokes this directly from its own log site without going through an edge: resolvedAttributes is then null and the mapper is applied here, which for such a caller is emit time.
See captureAll for the batched counterpart — same mapping, same gates, one export for a whole run of events.