| withOtelCollect | R Documentation |
Control Shiny's OTel collection level for particular reactive expression(s).
withOtelCollect() sets the OpenTelemetry collection level for
the duration of evaluating expr. localOtelCollect() sets the collection
level for the remainder of the current function scope.
withOtelCollect(collect, expr)
localOtelCollect(collect, envir = parent.frame())
collect |
Character string specifying the OpenTelemetry collection level. Must be one of the following: * `"none"` - No telemetry data collected * `"reactivity"` - Collect reactive execution spans (includes session and reactive update events) * `"all"` - All available telemetry (currently equivalent to `"reactivity"`) |
expr |
Expression to evaluate with the specified collection level
(for |
envir |
Environment where the collection level should be set
(for |
Note that "session" and "reactive_update" levels are not permitted as
these are runtime-specific levels that should only be set permanently via
options(shiny.otel.collect = ...) or the SHINY_OTEL_COLLECT environment
variable, not temporarily during reactive expression creation.
withOtelCollect() returns the value of expr.
localOtelCollect() is called for its side effect and returns the previous
collect value invisibly.
Best practice is to set the collection level for code that creates reactive expressions, not code that runs them. For instance:
# Disable telemetry for a reactive expression
withOtelCollect("none", {
my_reactive <- reactive({ ... })
})
# Disable telemetry for a render function
withOtelCollect("none", {
output$my_plot <- renderPlot({ ... })
})
#' # Disable telemetry for an observer
withOtelCollect("none", {
observe({ ... }))
})
# Disable telemetry for an entire module
withOtelCollect("none", {
my_result <- my_module("my_id")
})
# Use `my_result` as normal here
NOTE: It's not recommended to pipe existing reactive objects into
withOtelCollect() since they won't inherit their intended OTel settings,
leading to confusion.
See the shiny.otel.collect option within shinyOptions. Setting
this value will globally control OpenTelemetry collection levels.
## Not run:
# Temporarily disable telemetry collection
withOtelCollect("none", {
# Code here won't generate telemetry
reactive({ input$x + 1 })
})
# Collect reactivity telemetry but not other events
withOtelCollect("reactivity", {
# Reactive execution will be traced
observe({ print(input$x) })
})
# Use local variant in a function
my_function <- function() {
localOtelCollect("none")
# Rest of function executes without telemetry
reactive({ input$y * 2 })
}
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.