Logging Performance

The following vignette presents benchmarks for log4r against all general-purpose logging packages available on CRAN:

Each logging package features slightly different capabilities, but these benchmarks are focused on the two situations common to using all of them:

  1. Logging simple messages to the console; and
  2. Deciding not to log a message because it is below the threshold.

The first of these is likely the most common kind of logging done by end users, although some may chose to log to files, over HTTP, or to the system log (among others). Yet a benchmark of these other scenarios would largely show the relative expense of these operations, instead of the overhead of the logic performed by the logging packages themselves.

The second measures the performance impact of leaving logging messages in running code, even if they are below the current threshold of visibility. This is another measure of overhead for each logging package.

Using cat()

As a reference point, we can measure how long it takes R itself to write a simple message to the console:

cat_debug <- function() {
  cat() # Print nothing.
}

cat_info <- function() cat(
  "INFO  [", format(Sys.time(), "%Y-%m-%d %H:%M:%S", usetz = FALSE),
  "] Info message.", sep = ""
)

The log4r Package

The following is a typical log4r setup:

log4r_logger <- log4r::logger(threshold = "INFO")

log4r_info <- function() {
  log4r::log_info(log4r_logger, "Info message.")
}

log4r_debug <- function() {
  log4r::log_debug(log4r_logger, "Debug message.")
}

The futile.logger Package

The following is a typical futile.logger setup:

requireNamespace("futile.logger")
#> Loading required namespace: futile.logger

futile.logger::flog.logger()

fl_info <- function() {
  futile.logger::flog.info("Info message.")
}

fl_debug <- function() {
  futile.logger::flog.debug("Debug message.")
}

The logging Package

The following is what I believe to be a typical logging setup:

requireNamespace("logging")
#> Loading required namespace: logging

logging::basicConfig()

logging_info <- function() {
  logging::loginfo("Info message.")
}

logging_debug <- function() {
  logging::logdebug("Debug message.")
}

The logger Package

The following is what I believe to be a typical logger setup:

requireNamespace("logger")
#> Loading required namespace: logger
#> Registered S3 method overwritten by 'logger':
#>   method         from 
#>   print.loglevel log4r

# Match the behaviour of other logging packages and write to the console.
logger::log_appender(logger::appender_stdout)

logger_info <- function() {
  logger::log_info("Info message.")
}

logger_debug <- function() {
  logger::log_debug("Debug message.")
}

The lgr Package

The following is what I believe to be a typical lgr setup:

requireNamespace("lgr")
#> Loading required namespace: lgr

lgr_logger <- lgr::get_logger("perf-test")
lgr_logger$set_appenders(list(cons = lgr::AppenderConsole$new()))
lgr_logger$set_propagate(FALSE)

lgr_info <- function() {
  lgr_logger$info("Info message.")
}

lgr_debug <- function() {
  lgr_logger$debug("Debug message.")
}

The rlog Package

The rlog package currently has no configuration options other than the threshold, which is controlled via an environment variable and defaults to hiding debug-level messages:

requireNamespace("rlog")
#> Loading required namespace: rlog

rlog_info <- function() {
  rlog::log_info("Info message.")
}

rlog_debug <- function() {
  rlog::log_debug("Debug message.")
}

Test All Loggers

Debug messages should print nothing.

log4r_debug()
cat_debug()
logging_debug()
fl_debug()
logger_debug()
lgr_debug()
rlog_debug()

Info messages should print to the console. Small differences in output format are to be expected.

log4r_info()
#> INFO  [2026-11-03 12:38:26] Info message.
cat_info()
#> INFO  [2026-11-03 12:38:26] Info message.
logging_info()
#> 2026-11-03 12:38:26.103332 INFO::Info message.
fl_info()
#> INFO [2026-11-03 12:38:26] Info message.
logger_info()
#> INFO [2026-11-03 12:38:26] Info message.
lgr_info()
rlog_info()
#> 2026-11-03 12:38:26 [INFO] Info message.

Benchmarks

The following benchmarks all loggers defined above:

info_bench <- microbenchmark::microbenchmark(
  cat = cat_info(),
  log4r = log4r_info(),
  futile.logger = fl_info(),
  logging = logging_info(),
  logger = logger_info(),
  lgr = lgr_info(),
  rlog = rlog_info(),
  times = 500,
  control = list(warmups = 50)
)
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:26] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.
#> INFO [2026-11-03 12:38:27] Info message.

debug_bench <- microbenchmark::microbenchmark(
  cat = cat_debug(),
  log4r = log4r_debug(),
  futile.logger = fl_debug(),
  logging = logging_debug(),
  logger = logger_debug(),
  lgr = lgr_debug(),
  rlog = rlog_debug(),
  times = 500,
  control = list(warmups = 50)
)

How long does it take to print messages?

print(info_bench, order = "median")
#> Unit: microseconds
#>           expr     min       lq      mean   median       uq       max neval
#>          log4r  22.462  34.0640  44.82632  40.9460  48.9865  1490.741   500
#>            cat  44.563  52.3430  64.62395  59.1600  66.2385  2053.682   500
#>           rlog  67.857  83.5765  96.83169  93.0940 103.7135  1057.804   500
#>         logger 205.333 248.4630 303.11801 274.5270 311.6465  3462.129   500
#>        logging 306.472 349.3420 427.35805 379.9435 430.4225  8587.712   500
#>  futile.logger 493.841 586.4645 668.32739 626.1990 708.6070  3802.294   500
#>            lgr 549.185 619.6965 757.93361 655.0520 711.8730 35363.798   500

How long does it take to decide to do nothing?

print(debug_bench, order = "median")
#> Unit: microseconds
#>           expr     min       lq       mean   median       uq      max neval
#>            cat   1.893   2.8650   5.076668   3.7170   4.1330  732.897   500
#>          log4r   2.635   3.5815   6.221446   4.4985   5.1950  855.005   500
#>           rlog   6.623   8.5005  11.690728  10.2290  11.2510  753.446   500
#>            lgr  12.854  15.6390  19.677540  17.7030  19.2010  821.172   500
#>         logger  16.160  20.0270  25.081034  23.2430  25.4330  795.083   500
#>        logging  17.402  21.3890  27.316532  25.3425  27.6265  844.325   500
#>  futile.logger 199.342 212.2110 240.966330 217.9370 234.0620 3777.648   500