tests/testthat/test-logger-provider-stdout.R

test_that("logger_provider_stdstream", {
  logger_provider <- logger_provider_stdstream_new()
  logger <- logger_provider$get_logger("mylogger")
  expect_true(logger$is_enabled())
  expect_equal(logger$get_minimum_severity(), otel::log_severity_levels["info"])
})

test_that("log to file", {
  tmp <- tempfile()
  on.exit(unlink(tmp), add = TRUE)
  lp <- logger_provider_stdstream_new(list(output = tmp))
  lgr <- lp$get_logger("mylogger")

  expect_true(lgr$is_enabled())
  expect_equal(lgr$get_minimum_severity(), otel::log_severity_levels["info"])
  lgr$log("This is a simple log message")
  lgr$log("This is a warning", severity = "warn")

  ts <- Sys.time()
  lgr$log("This is a log message.")
  lgr$log(
    "This is a log message with attributes",
    attributes = list(foo = "bar"),
    timestamp = ts2 <- Sys.time()
  )
  lp$flush()

  expect_true(file.exists(tmp))
  spns <- parse_spans(tmp)
  test_fields <- c(
    "severity_num",
    "severity_text",
    "body",
    "attributes",
    "trace_id",
    "span_id"
  )
  expect_snapshot({
    spns[[1]][test_fields]
    spns[[2]][test_fields]
    spns[[3]][test_fields]
    spns[[4]][test_fields]
  })

  # time stamps are set
  expect_match(spns[[3]]$timestamp, "^[0-9]{10}[0-9]*$")
  expect_match(spns[[3]]$observed_timestamp, "^[0-9]{10}[0-9]*$")
  expect_true(
    as.integer(substr(spns[[3]]$timestamp, 1, 10)) - as.integer(ts) < 10
  )
  expect_true(
    as.integer(substr(spns[[3]]$observed_timestamp, 1, 10)) - as.integer(ts) <
      10
  )
  expect_equal(
    substr(spns[[4]]$timestamp, 1, 10),
    as.character(as.integer(ts2))
  )
})

test_that("logger_provider_stdstream_options", {
  expect_snapshot(logger_provider_stdstream_options())
})

Try the otelsdk package in your browser

Any scripts or data that you put into this service are public.

otelsdk documentation built on Sept. 10, 2025, 10:32 a.m.