You can use this function to test that OpenTelemetry output is correctly generated for your package or application.
Value
A list with the output for each output type. Entries:
value: value ofexpr.traces: the recorded spans, if requested inwhat.metrics: the recorded metrics measurements, if requested inwhat.
Details
It evaluates the supplied expression, collects OpenTelemetry output from it and returns it.
Note: with_otel_record() cannot record logs yet.
with_otel_record() uses tracer_provider_memory and
meter_provider_memory internally.
Examples
spns <- with_otel_record({
trc <- otel::get_tracer("mytracer")
spn1 <- trc$start_local_active_span()
spn2 <- trc$start_local_active_span("my")
spn2$end()
spn1$end()
NULL
})
spns
#> $value
#> NULL
#>
#> $traces
#> $traces$my
#> <otel_span_data>
#> trace_id : 1096b8981d282e3165e2387cd82d33cc
#> span_id : 4cf4cec564f290ab
#> name : my
#> flags : +sampled -random
#> parent : 5c221620d4d2cada
#> description :
#> resource_attributes :
#> os.type : linux
#> process.owner : runner
#> process.pid : 9543
#> process.runtime.description : R version 4.5.1 (2025-06-13)
#> process.runtime.name : R
#> process.runtime.version : 4.5.1
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.2
#> schema_url :
#> instrumentation_scope :
#> <otel_instrumentation_scope_data>
#> name : mytracer
#> version :
#> schema_url :
#> attributes :
#> kind : internal
#> status : unset
#> start_time : 2025-10-07 10:51:17
#> duration : 0.000152785
#> attributes :
#> events :
#> links :
#>
#> $traces$`<NA>`
#> <otel_span_data>
#> trace_id : 1096b8981d282e3165e2387cd82d33cc
#> span_id : 5c221620d4d2cada
#> name : <NA>
#> flags : +sampled -random
#> parent : 0000000000000000
#> description :
#> resource_attributes :
#> os.type : linux
#> process.owner : runner
#> process.pid : 9543
#> process.runtime.description : R version 4.5.1 (2025-06-13)
#> process.runtime.name : R
#> process.runtime.version : 4.5.1
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.2
#> schema_url :
#> instrumentation_scope :
#> <otel_instrumentation_scope_data>
#> name : mytracer
#> version :
#> schema_url :
#> attributes :
#> kind : internal
#> status : unset
#> start_time : 2025-10-07 10:51:17
#> duration : 0.000637697
#> attributes :
#> events :
#> links :
#>
#>
#> $metrics
#> <otel_metrics_data>
#> <otel_resouce_metrics>
#> attributes:
#> os.type : linux
#> process.owner : runner
#> process.pid : 9543
#> process.runtime.description : R version 4.5.1 (2025-06-13)
#> process.runtime.name : R
#> process.runtime.version : 4.5.1
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.2
#> scope_metric_data [0]:
#>
#>