A logger consists of a log level threshold, a log message formatter function, a log record layout formatting function and the appender function deciding on the destination of the log record. For more details, see the package README.md.

logger(threshold, formatter, layout, appender)



omit log messages below this log_levels


function pre-processing the message of the log record when it's not wrapped in a skip_formatter call


function rendering the layout of the actual log record


function writing the log record


function taking level and msg arguments


By default, a general logger definition is created when loading the logger package, that uses

  1. INFO as the log level threshold

  2. layout_simple as the layout function showing the log level, timestamp and log message

  3. formatter_glue (or formatter_sprintf if glue is not installed) as the default formatter function transforming the R objects to be logged to a character vector

  4. appender_console as the default log record destination


It's quite unlikely that you need to call this function directly, but instead set the logger parameters and functions at log_threshold, log_formatter, log_layout and log_appender and then call log_levels and its derivatives, such as log_info directly.


For more details, see the Anatomy of a Log Request vignette at https://daroczig.github.io/logger/articles/anatomy.html.


if (FALSE) {
do.call(logger, logger:::namespaces$global[[1]])(INFO, 42)
do.call(logger, logger:::namespaces$global[[1]])(INFO, '{pi}')
x <- 42
do.call(logger, logger:::namespaces$global[[1]])(INFO, '{x}^2 = {x^2}')