The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.
log4r is a fast, lightweight, object-oriented approach to logging in R based on the widely-emulated Apache Log4j project.
log4r differs from other R logging packages in its
focus on performance and simplicity. As such, it has fewer features –
although it is still quite extensible, as seen below – but is much
faster. See vignette("performance", package = "log4r")
for
details.
Unlike other R logging packages, log4r also has
first-class support for structured logging. See
vignette("structured-logging", package = "log4r")
for
details.
The package is available from CRAN:
install.packages("log4r")
If you want to use the development version, you can install the package from GitHub as follows:
# install.packages("remotes")
::install_github("johnmyleswhite/log4r") remotes
Logging is configured by passing around logger
objects
created by logger()
. By default, this will log to the
console and suppress messages below the "INFO"
level:
<- logger()
logger
info(logger, "Located nearest gas station.")
#> INFO [2019-09-04 16:31:04] Located nearest gas station.
warn(logger, "Ez-Gas sensor network is not available.")
#> WARN [2019-09-04 16:31:04] Ez-Gas sensor network is not available.
debug(logger, "Debug messages are suppressed by default.")
Logging destinations are controlled by Appenders, a few of which are provided by the package. For instance, if we want to debug-level messages to a file:
<- tempfile()
log_file <- logger("DEBUG", appenders = file_appender(log_file))
logger
info(logger, "Messages are now written to the file instead.")
debug(logger, "Debug messages are now visible.")
readLines(log_file)
#> [1] "INFO [2019-09-04 16:31:04] Messages are now written to the file instead."
#> [2] "DEBUG [2019-09-04 16:31:04] Debug messages are now visible."
The appenders
parameter takes a list, so you can log to
multiple destinations transparently.
For local development or simple batch R scripts run manually, writing
log messages to a file for later inspection is convenient. However, for
deployed R applications or automated scripts it is more likely you will
need to send logs to a central location; see
vignette("logging-beyond-local-files", package = "log4r")
.
To control the format of the messages you can change the Layout used by each appender. Layouts are functions; you can write your own quite easily:
<- function(level, ...) {
my_layout paste0(format(Sys.time()), " [", level, "] ", ..., collapse = "")
}
<- logger(appenders = console_appender(my_layout))
logger info(logger, "Messages should now look a little different.")
#> 2019-09-04 16:31:04 [INFO] Messages should now look a little different.
With an appropriate layout, you can also use structured logging, enriching log messages with contextual fields:
<- logger(appenders = console_appender(logfmt_log_layout()))
logger info(
message = "processed entries", file = "catpics_01.csv",
logger, entries = 4124, elapsed = 2.311
)#> level=INFO ts=2021-10-22T20:19:21Z message="processed entries" file=catpics_01.csv entries=4124 elapsed=2.311
The 0.2 API is still supported:
<- create.logger()
logger
logfile(logger) <- log_file
level(logger) <- "INFO"
debug(logger, 'A Debugging Message')
info(logger, 'An Info Message')
warn(logger, 'A Warning Message')
error(logger, 'An Error Message')
fatal(logger, 'A Fatal Error Message')
readLines(log_file)
#> [1] "INFO [2019-09-04 16:31:05] An Info Message"
#> [2] "WARN [2019-09-04 16:31:05] A Warning Message"
#> [3] "ERROR [2019-09-04 16:31:05] An Error Message"
#> [4] "FATAL [2019-09-04 16:31:05] A Fatal Error Message"
The package is available under the terms of the Artistic License 2.0.
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.
Health stats visible at Monitor.