- logo 😻 (#196, @hadley)
- computing metadata lazily, so various expensive computations are only performed if you actually add them to the log (#105, @hadley)
log_appender()
,log_layout()
andlog_formatter()
now check that you are calling them with a function, and return the previously set value (#170, @hadley)- new function to return number of log indices (#194, @WurmPeter)
appender_async
is now usingmirai
instead of a custom background process and queue system (#214, @hadley @shikokuchuo)
eval
scoping and lazy eval (#178, @hadley)
- update
pkgdown
site to Bootstrap 5 and related revamp, e.g. reference index and run/show examples (#159 #165 #193, @hadley) - roxygen updated to use markdown, general cleanup (#160 #161 #191 #201, @hadley)
- testing improvements, e.g. move to
testthat
v3 and snapshots, syntactic sugar (#163 #167 #168 #169 #171 #192, @hadley) - README tweaks (#162 #176, @hadley)
- modernize GitHub Actions (#171, @hadley)
- drop support for R versions below 4.0.0 (#177, @hadley)
- internal function tweaks (#181 #187 #197, @hadley)
- restyle sources (#185 #186 #191 #199, @daroczig and @hadley)
Many unrelated small features, fixes and documentation updates collected over 2+ years.
- update
log_*
functions to invisibly return the formatted log message and record (#26, @r2evans) - add
namespace
argument tolog_shiny_input_changes
(#93, @kpagacz) - optionally suppress messages in
globalCallingHandlers
after being logged (#100, @DanChaltiel) as.loglevel
helper to convert string/number to loglevel (requested by @tentacles-from-outer-space)- new formatter function:
formatter_glue_safe
(#126, @terashim) - support
OFF
log level (#138, @pawelru) - override default
INFO
log level via env var (#145, requested by sellorm)
- handle zero-length messages in
formatter_glue_or_sprintf
(#74, @deeenes) - generalize
log_separator
to work with all layout functions (#96, @Polkas) - support log levels in
log_shiny_input_changes
(#103, @taekeharkema) - fix fn name lookup/reference with nested calls (#120, reported by @averissimo)
- force the
file
argument ofappender_tee
(#124, reported by @dbontemps) - don't allow stacking logger hooks on messages/warnings/errors (reported by @jkeuskamp)
- improve fragile test case when
Hmisc
loaded (#131, @r2evans) - pass
index
,namespace
etc fromlog_
functions down tolog_level
(#143, @MichaelChirico) - refer to the caller function in global message logger hooks (#146, reported by @gabesolomon10)
Maintenance release:
- fix unbalanced code chunk delimiters in vignette (yihui/knitr#2057)
Maintenance release:
- update
appender_slack
to useslackr_msg
instead oftext_slackr
appender_console
writes tostderr
by default instead ofstdout
(#28)
- default date format in
glue
layouts (#44, @burgikukac) fn
reference in loggers will not to a Cartesian join on the log lines and message, but merge (and clean up) thefn
even for large anonymous functions (#20)
- allow defining the log level threshold as a string (#13, @artemklevtsov)
- allow updating the log level threshold, formatter, layout and appender in all namespaces with a single call (#50)
- new argument to
appender_file
to optionally truncate before appending (#24, @eddelbuettel) - new arguments to
appender_file
to optionally rotate the log files after appending (#42) - new meta variables for logging in custom layouts: R version and calling package's version
- improved performance by not evaluating arguments when the log record does not meet the log level threshold (#27, @jozefhajnala)
logger
in now part of the Mikata Project: https://mikata.dev
%except%
: evaluate an expression with fallbacklog_separator
: logging with separator lines (#16)log_tictoc
: tic-toc logging (#16, @nfultz)log_failure
: log error before failing (#19, @amy17519)log_messages
,log_warnings
,log_errors
: optionally auto-log messages, warnings and errors usingglobalCallingHandlers
on R 4.0.0 and above, and injectinglogger
calls tomessage
,warnings
andstop
below R 4.0.0log_shiny_input_changes
: auto-log input changes in Shiny apps (#25)
layout_pander
: transform R objects into markdown before logging (#22)
layout_blank
: blank log messages without any modificationlayout_json_parser
: render the layout as a JSON blob after merging with requested meta fields
appender_telegram
: deliver log records to Telegram (#14, @artemklevtsov)appender_syslog
: deliver log records to syslog (#30, @atheriel)appender_kinesis
: deliver log records to Amazon Kinesis (#35)appender_async
: wrapper function for other appender functions to deliver log records in a background process asynchronously without blocking the master process (#35)
Initial CRAN release after collecting feedback for a month on Twitter at https://twitter.com/daroczig/status/1067461632677330944
:
-
finalized design of a log request defined by
- a log level
threshold
, - a
formatter
function preparing the log message, - a
layout
function rendering the actual log records and - an
appender
function delivering to the log destination
- a log level
-
detailed documentation with 7 vignettes and a lot of examples, even some benchmarks
-
~75% code coverage for unit tests
-
5
formatter
functions mostly usingpaste
,sprintf
andglue
-
6
layout
functions with convenient wrappers to let users define custom layouts viaglue
orJSON
, including colorized output -
5
appender
functions delivering log records to the console, files, Pushbullet and Slack -
helper function to evaluate an expressions with auto-logging both the expression and its result
-
helper function to temporarily update the log level threshold
-
helper function to skip running the formatter function on a log message
-
mostly backward compatibly with the
logging
andfutile.logger
packages