Get/Create a Logger

get_logger(name, class = Logger, reset = FALSE)

get_logger_glue(name)

Arguments

name

a character scalar or vector: The qualified name of the Logger as a hierarchical value.

class

An R6ClassGenerator object. Usually Logger or LoggerGlue are the only valid choices.

reset

a logical scalar. If TRUE the logger is reset to an unconfigured state. Unlike $config(NULL) this also replaces a LoggerGlue with vanilla Logger. Please note that this will invalidate Logger references created before the reset call (see examples).

Value

a Logger

Examples

lg <- get_logger("log/ger/test")
# equivalent to
lg <- get_logger(c("log", "ger", "test"))
lg$warn("a %s message", "warning")
#> WARN  [20:04:39.981] a warning message
lg
#> <Logger> [info] log/ger/test
#> 
#> inherited appenders:
#>   console: <AppenderConsole> [all] -> console
lg$parent
#> <Logger> [info] log/ger
#> 
#> inherited appenders:
#>   console: <AppenderConsole> [all] -> console

if (requireNamespace('glue')){
  lg <- get_logger_glue("log/ger")
}
lg$warn("a {.text} message", .text = "warning")
#> WARN  [20:04:39.995] a warning message

# completely reset 'glue' to an unconfigured vanilla Logger
get_logger("log/ger", reset = TRUE)
#> <Logger> [info] log/ger
#> 
#> inherited appenders:
#>   console: <AppenderConsole> [all] -> console
# WARNING: this invalidates existing references to the Logger
try(lg$info("lg has been invalidated an no longer works"))
#> Warning: [2023-03-04 20:04:40.003] log/ger ~ error in `lg$info("lg has been invalidated an no longer works")`: Trying to log via a Logger reference that is no longer valid. Logger references become invalid when you reset a when you reset a Logger with `get_logger(reset = TRUE)`. Please re-create the Logger reference with with `get_logger(log/ger)`

lg <- get_logger("log/ger")
lg$info("now all is well again")
#> INFO  [20:04:40.008] now all is well again