logfmt_log_layout() and
json_log_layout() now use timestamps with microsecond
precision, when possible.
debug(), info(), warn(),
error(), and fatal() are deprecated in favour
of the newly-exported log_debug(), log_info(),
log_warn(), log_error(), and
log_fatal(), respectively, though for performance reasons
they do not yet issue deprecation warnings when used. These older
functions tended to cause namespace issues with other packages or base R
itself (#29).
Much of the pre-0.3.0 logger API is now formally deprecated and
issues warnings when used. This includes create.logger()
and logfile().
is.loglevel(), as.loglevel(), its alias
loglevel(), and S3 generics for the "loglevel"
class are now considered an implementation detail and are no longer part
of the public API. They now issue deprecation warnings when used.
Hopefully this makes way for adding a TRACE level and
corresponding log_trace() function in the future. The
obscure verbosity() function is also now deprecated, for
similar reasons.
Errors have been migrated to cli::cli_abort() and
are now much friendlier and actionable as a result.
Fixes failing unit tests for the HTTP appender.
JSON logs now have newlines, as intended (#30, @brooklynbagel).
Updates the R CMD check GitHub Action to a modern version (#27, @hadley).
Updates the project to testthat 3e (#26, @hadley).
Updates roxygen2 documentation to use Markdown
syntax (#25, @hadley).
logfmt_log_layout() would not
correctly handle memory reallocation of the underlying buffer.Fixes a crash when the logfmt_log_layout() is passed
long fields that also need escaping.
logfmt_log_layout() now drops fields with missing
names rather than writing NA, which matches the existing
handling of other empty/unrepresentable field names.
Support for structured logging by passing additional named parameters to the existing logging functions. This includes two new structured-logging layouts for JSON and logfmt and a vignette on using them: “Structured Logging”.
New built-in appenders for writing to the Unix system log, via HTTP, and to TCP connections, plus a vignette on using them: “Logging Beyond Local Files”.
A new bare_log_layout() for when you don’t want the
level or timestamp handled automatically. This is most useful for the
syslog_appender().
Log messages prior to the last entry are no longer lost when a
file appender is created with append = FALSE. Instead, the
file is truncated only when the appender is created, as intended. Fixes
#17.
default_log_layout() would not
validate format strings correctly.?logger, ?appenders, and
?layouts for details."loglevel", access
to the hidden constants, e.g., log4r:::DEBUG, is deprecated
(#4).