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-07-06 12:59:08] Info message.
cat_info()
#> INFO  [2026-07-06 12:59:08] Info message.
logging_info()
#> 2026-07-06 12:59:08.9862 INFO::Info message.
fl_info()
#> INFO [2026-07-06 12:59:08] Info message.
logger_info()
#> INFO [2026-07-06 12:59:08] Info message.
lgr_info()
loggit_info()
#> {"timestamp": "2026-07-06T12:59:08+0000", "log_lvl": "INFO", "log_msg": "Info message."}
rlog_info()
#> 2026-07-06 12:59:08 [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-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:09] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] Info message.
#> INFO [2026-07-06 12:59:10] 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.221  34.6600  40.53374  37.1950  42.3090   967.025   500
#>            cat  44.193  53.3490  68.44568  60.4530  65.5325  2315.562   500
#>           rlog  67.105  84.1115  97.72145  90.2530  95.0675  2405.089   500
#>         logger 205.193 246.4455 260.94081 255.1715 271.2715  1582.744   500
#>        logging 294.980 339.3535 373.40590 350.5840 371.2230  6877.267   500
#>  futile.logger 502.367 563.5420 602.55356 584.8015 602.1040  2954.785   500
#>            lgr 540.428 593.9985 704.27893 611.3915 627.3810 32879.552   500
#>         loggit 607.465 659.4805 702.69233 678.5265 693.6900  7194.239   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.924   2.6450   4.992572   3.5715   4.0070  740.662   500
#>          log4r   2.645   3.3810   6.027914   4.3480   5.1545  836.952   500
#>           rlog   6.352   7.9645  11.088568   9.7880  10.7445  721.527   500
#>            lgr  12.623  14.2970  18.124194  17.0870  18.2690  767.383   500
#>         logger  15.970  18.7445  28.853896  22.7270  24.4750 2555.379   500
#>        logging  16.671  19.7320  31.586208  23.6495  26.8950 2662.160   500
#>  futile.logger 195.285 202.6280 214.608040 207.5770 220.5020 1241.347   500