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 : f2b0b90549fa4268ca46274b3e537d17
#> span_id : 560613a723beb78b
#> name : my
#> flags : +sampled -random
#> parent : 709aa24df753ab64
#> description :
#> resource_attributes :
#> os.type : linux
#> process.owner : runner
#> process.pid : 8444
#> process.runtime.description : R version 4.5.2 (2025-10-31)
#> process.runtime.name : R
#> process.runtime.version : 4.5.2
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.3
#> schema_url :
#> instrumentation_scope :
#> <otel_instrumentation_scope_data>
#> name : mytracer
#> version :
#> schema_url :
#> attributes :
#> kind : internal
#> status : unset
#> start_time : 2026-03-10 08:59:23
#> duration : 0.000140722
#> attributes :
#> events :
#> links :
#>
#> $traces$`<NA>`
#> <otel_span_data>
#> trace_id : f2b0b90549fa4268ca46274b3e537d17
#> span_id : 709aa24df753ab64
#> name : <NA>
#> flags : +sampled -random
#> parent : 0000000000000000
#> description :
#> resource_attributes :
#> os.type : linux
#> process.owner : runner
#> process.pid : 8444
#> process.runtime.description : R version 4.5.2 (2025-10-31)
#> process.runtime.name : R
#> process.runtime.version : 4.5.2
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.3
#> schema_url :
#> instrumentation_scope :
#> <otel_instrumentation_scope_data>
#> name : mytracer
#> version :
#> schema_url :
#> attributes :
#> kind : internal
#> status : unset
#> start_time : 2026-03-10 08:59:23
#> duration : 0.000616347
#> attributes :
#> events :
#> links :
#>
#>
#> $metrics
#> <otel_metrics_data>
#> <otel_resouce_metrics>
#> attributes:
#> os.type : linux
#> process.owner : runner
#> process.pid : 8444
#> process.runtime.description : R version 4.5.2 (2025-10-31)
#> process.runtime.name : R
#> process.runtime.version : 4.5.2
#> service.name : unknown_service
#> telemetry.sdk.language : R
#> telemetry.sdk.name : opentelemetry
#> telemetry.sdk.version : 0.2.3
#> scope_metric_data [0]:
#>
#>