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 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).