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 loggit Package

The following is what I believe to be a typical loggit setup. Since we only want to log to the console, set the output file to /dev/null. In addition, loggit does not have a notion of thresholds, so there is no “do nothing” operation to test.

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

if (.Platform$OS.type == "unix") {
  loggit::set_logfile("/dev/null")
} else {
  loggit::set_logfile("nul")
}

loggit_info <- function() {
  loggit::loggit("INFO", "Info 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-05-09 08:37:23] Info message.
cat_info()
#> INFO  [2026-05-09 08:37:23] Info message.
logging_info()
#> 2026-05-09 08:37:23.046281 INFO::Info message.
fl_info()
#> INFO [2026-05-09 08:37:23] Info message.
logger_info()
#> INFO [2026-05-09 08:37:23] Info message.
lgr_info()
loggit_info()
#> {"timestamp": "2026-05-09T08:37:23+0000", "log_lvl": "INFO", "log_msg": "Info message."}
rlog_info()
#> 2026-05-09 08:37:23 [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(),
  loggit = loggit_info(),
  rlog = rlog_info(),
  times = 500,
  control = list(warmups = 50)
)
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:23] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] Info message.
#> INFO [2026-05-09 08:37:24] 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  20.310  31.5470  36.87067  34.3260  39.0130   796.160   500
#>            cat  39.819  47.4955  57.73485  56.1685  59.8935  1208.701   500
#>           rlog  55.052  75.1315  89.64344  83.3090  89.6380  2366.006   500
#>         logger 173.377 225.8545 247.16618 244.4570 257.9825  2598.531   500
#>        logging 254.647 316.7940 345.74181 335.8075 352.1770  6187.199   500
#>  futile.logger 441.134 543.3005 587.51061 566.7550 590.0090  6726.488   500
#>            lgr 500.502 564.8220 661.66884 587.8960 603.5145 32599.069   500
#>         loggit 554.572 627.5650 684.16816 647.6705 668.3055  3025.013   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.933   2.2730   4.070614   2.6340   3.0245  659.167   500
#>          log4r   2.343   2.7640   5.664382   3.4300   4.0060 1071.398   500
#>           rlog   6.409   7.0455   9.771480   8.2170   9.3585  630.064   500
#>            lgr  11.607  12.6280  15.910562  14.5170  15.7035  732.996   500
#>         logger  14.531  15.6480  19.670350  17.8415  19.7540  696.372   500
#>        logging  15.052  16.4640  21.192274  19.7645  21.8730  707.028   500
#>  futile.logger 169.241 178.3090 199.088172 183.5320 192.6855 2866.428   500