The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
To make a successful log record, logger
requires the
below components:
a log request, eg
ERROR
in this caseformatter
functionthe environment and meta-information of the log request, eg actual timestamp, hostname of the computer, the name of the user running the R script, the pid of the R process, calling function and the actual call etc.
f <- function() get_logger_meta_variables(log_level = INFO)
f()
#> $ns
#> [1] NA
#>
#> $ans
#> [1] "global"
#>
#> $topenv
#> [1] "R_GlobalEnv"
#>
#> $fn
#> [1] "f"
#>
#> $call
#> [1] "f()"
#>
#> $time
#> [1] "2024-10-21 00:07:15 CEST"
#>
#> $levelr
#> Log level: INFO
#>
#> $level
#> [1] "INFO"
#>
#> $pid
#> [1] 2486861
#>
#> $r_version
#> [1] "4.4.1"
#>
#> $ns_pkg_version
#> [1] NA
#>
#> $node
#> [1] "nevermind"
#>
#> $arch
#> [1] "x86_64"
#>
#> $os_name
#> [1] "Linux"
#>
#> $os_release
#> [1] "6.9.6-arch1-1"
#>
#> $os_version
#> [1] "#1 SMP PREEMPT_DYNAMIC Fri, 21 Jun 2024 19:49:19 +0000"
#>
#> $user
#> [1] "daroczig"
a logger definition to process the log request, including
log level threshold
, eg INFO
, which
defines the minimum log level required for actual logging – all log
requests with lower log level will be thrown away
formatter
function, which takes R objects and
converts those into actual log message(s) to be then passed to the
layout
function for the log record rendering – such as
paste
, sprintf
, glue
or eg the
below custom example:
layout
function, which takes log message(s) and
further information on the log request (such as timestamp, hostname,
username, calling function etc) to render the actual log records eg
human-readable text, JSON etc
appender
function, which takes fully-rendered log
record(s) and delivers to somewhere, eg stdout
, a file or a
streaming service, eg
Putting all these together (by explicitly setting the default config
in the global
namespace):
log_threshold(INFO)
log_formatter(formatter_glue)
log_layout(layout_simple)
log_appender(appender_stdout)
log_debug("I am a low level log message that will not be printed with a high log level threshold")
log_warn("I am a higher level log message that is very likely to be printed")
#> WARN [2024-10-21 00:07:15] I am a higher level log message that is very likely to be printed
Note, that all logger
definitions and requests are tied
to a logging namespace, and one log request might trigger multiple
logger
definitions as well (stacking). Find more
information on these in the Customizing
the format and destination of log records vignette.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.