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-10-04 12:01:35] Info message.
cat_info()
#> INFO  [2026-10-04 12:01:35] Info message.
logging_info()
#> 2026-10-04 12:01:35.407068 INFO::Info message.
fl_info()
#> INFO [2026-10-04 12:01:35] Info message.
logger_info()
#> INFO [2026-10-04 12:01:35] Info message.
lgr_info()
rlog_info()
#> 2026-10-04 12:01:35 [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-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:35] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] Info message.
#> INFO [2026-10-04 12:01:36] 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.372  34.1435  42.57487  38.9370  45.0890  1317.648   500
#>            cat  42.990  52.4770  64.00455  59.4215  66.3890  1390.605   500
#>           rlog  63.849  82.8840  94.97988  90.7095  99.8360   960.072   500
#>         logger 209.311 246.2900 285.67038 262.3690 287.1755  2810.604   500
#>        logging 296.132 346.0105 396.19039 362.4705 390.7790  8046.823   500
#>  futile.logger 497.228 562.0885 630.91345 592.2150 636.4475  3694.773   500
#>            lgr 552.180 601.7080 731.60152 625.1965 654.3115 33617.078   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.914   2.8250   5.223882   3.677   4.1880  739.570   500
#>          log4r   2.615   3.6465   6.377408   4.373   5.1090  890.843   500
#>           rlog   6.562   8.4350  11.461420  10.159  11.0960  784.905   500
#>            lgr  12.363  15.6645  20.470956  17.969  19.2105 1144.926   500
#>         logger  16.440  20.2280  25.085216  23.544  25.3870  799.792   500
#>        logging  17.132  21.1340  26.485188  25.382  27.4970  807.536   500
#>  futile.logger 199.272 209.8010 235.741922 216.724 231.3320 3302.732   500