The logging package uses a formatter that behaves differently
when the input is a string or other R object. If the first argument
is a string, then sprintf() is being called – otherwise it does
something like log_eval() and logs the R expression(s) and the
result(s) as well.
formatter_logging(
...,
.logcall = sys.call(),
.topcall = sys.call(-1),
.topenv = parent.frame()
)string and further params passed to sprintf() or R
expressions to be evaluated
the logging call being evaluated (useful in formatters and layouts when you want to have access to the raw, unevaluated R expression)
R expression from which the logging function was called (useful in formatters and layouts to extract the calling function's name or arguments)
original frame of the .topcall calling function
where the formatter function will be evaluated and that is used
to look up the namespace as well via logger:::top_env_name
character vector
Other log_formatters:
formatter_cli(),
formatter_glue(),
formatter_glue_or_sprintf(),
formatter_glue_safe(),
formatter_json(),
formatter_pander(),
formatter_paste(),
formatter_sprintf()
log_formatter(formatter_logging)
log_info("42")
#> INFO [2025-09-17 13:55:07] 42
log_info(42)
#> INFO [2025-09-17 13:55:07] 42: 42
log_info(4 + 2)
#> INFO [2025-09-17 13:55:07] 4 + 2: 6
log_info("foo %s", "bar")
#> INFO [2025-09-17 13:55:07] foo bar
log_info("vector %s", 1:3)
#> INFO [2025-09-17 13:55:07] vector 1
#> INFO [2025-09-17 13:55:07] vector 2
#> INFO [2025-09-17 13:55:07] vector 3
log_info(12, 1 + 1, 2 * 2)
#> INFO [2025-09-17 13:55:07] 12: 12
#> INFO [2025-09-17 13:55:07] 1 + 1: 2
#> INFO [2025-09-17 13:55:07] 2 * 2: 4