track_usage | R Documentation |
Used in Shiny server
it will record all inputs and
output changes and errors that occurs through an output.
track_usage( storage_mode, what = c("session", "input", "output", "error"), exclude_input_regex = NULL, exclude_input_id = NULL, on_unload = FALSE, app_name = NULL, exclude_users = NULL, get_user = NULL, dependencies = TRUE, session = getDefaultReactiveDomain() )
storage_mode |
Storage mode to use : |
what |
Elements to record between |
exclude_input_regex |
Regular expression to exclude inputs from tracking. |
exclude_input_id |
Vector of |
on_unload |
Logical, save log when user close the browser window or tab,
if |
app_name |
Name of the app as a character string.
If |
exclude_users |
Character vectors of user for whom it is not necessary to save the log. |
get_user |
A |
dependencies |
Load dependencies in client, can be set to |
session |
The shiny session. |
The following input
s will be accessible in the server:
.shinylogs_lastInput : last input
used by the user
.shinylogs_input : all input
s send from the browser to the server
.shinylogs_error : all errors generated by output
s elements
.shinylogs_output : all output
s generated from the server
.shinylogs_browserData : information about the browser where application is displayed.
# Save logs on disk ---------------------------------- if (interactive()) { # temporary directory for writing logs tmp <- tempdir() # when app stop, # navigate to the directory containing logs onStop(function() { browseURL(url = tmp) }) # Classic Iris clustering with Shiny ui <- fluidPage( headerPanel("Iris k-means clustering"), sidebarLayout( sidebarPanel( selectInput( inputId = "xcol", label = "X Variable", choices = names(iris) ), selectInput( inputId = "ycol", label = "Y Variable", choices = names(iris), selected = names(iris)[[2]] ), numericInput( inputId = "clusters", label = "Cluster count", value = 3, min = 1, max = 9 ) ), mainPanel( plotOutput("plot1") ) ) ) server <- function(input, output, session) { # Store JSON with logs in the temp dir track_usage( storage_mode = store_json(path = tmp) ) # classic server logic selectedData <- reactive({ iris[, c(input$xcol, input$ycol)] }) clusters <- reactive({ kmeans(selectedData(), input$clusters) }) output$plot1 <- renderPlot({ palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999")) par(mar = c(5.1, 4.1, 0, 1)) plot(selectedData(), col = clusters()$cluster, pch = 20, cex = 3) points(clusters()$centers, pch = 4, cex = 4, lwd = 4) }) } shinyApp(ui, server) } # Logs in console & special inputs ------------------------ if (interactive()) { library(shiny) library(shinylogs) ui <- fluidPage( tags$h2("Record inputs change"), fluidRow( column( width = 3, selectInput( inputId = "select", label = "Select input", choices = month.name ), numericInput( inputId = "numeric", label = "Numerci input", value = 4, min = 0, max = 20 ), checkboxGroupInput( inputId = "checkboxGroup", label = "Checkbox group input", choices = LETTERS[1:5] ), sliderInput( inputId = "slider", label = "Slider input", min = 0, max = 100, value = 50 ) ), column( width = 9, tags$b("Last input triggered:"), verbatimTextOutput(outputId = "last_input"), tags$b("All inputs:"), verbatimTextOutput(outputId = "all_inputs") ) ) ) server <- function(input, output, session) { # dont store on disk, just show in R console track_usage( storage_mode = store_null() ) # last input triggered output$last_input <- renderPrint({ input$.shinylogs_lastInput }) # all inputs that have changed output$all_inputs <- renderPrint({ input$.shinylogs_input }) } shinyApp(ui, server) }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.