Major update, non-breaking though users with custom appenders are encouraged to view the Changes section below. This version polishes up the codebase and general design. Tightened up a few aspects of how appenders and appender middleware work. Added a serializing Carmine appender (I use something similar in prod most of the time). Also finally added facilities for ad hoc (non-atom) logging configuration.
Overall quite happy with the state of Timbre as of this release. No major anticipated improvements/changes from here (modulo bugs).
- Android appender, courtesy of AdamClements.
- Powerful, high-performance Carmine (Redis) appender: query-able, rotating serialized log entries by log level. See README or appender's docstring for details. (Recommended!)
- Appender rate limits now specified in a more flexible format:
[ncalls window-msecs]
, e.g.[1 2000]
for 1 write / 2000 msecs. - Appender rate limits now also apply (at 1/4 ncalls) to any particular logging arguments in the same time window. This helps prevent a particular logging call from flooding the limiter and preventing other calls from getting through.
sometimes
macro that executes body with given probability. Useful for sampled logging (e.g. email a report for 0.01% of user logins in production).log
andlogf
macros now take an optional logging config map as their first argument:(log :info "hello") => use @timbre/config
,(log <config> :info "hello") => use <config>
.- Appenders can now specify an optional
:fmt-output-opts
that'll get passed tofmt-output-fn
for any special formatting requirements they may have (e.g. the Postal email appender provides an arg to suppress ANSI colors in stacktrace output).
- EXPERIMENTAL: stacktraces now formatted with
io.aviso/pretty
rather than clj-stacktrace. Feedback on this (esp. coloring) welcome! - DEPRECATED:
red
,green
,blue
-> usecolor-str
instead. - DEPRECATED: config
prefix-fn
has been replaced by the more flexiblefmt-output-fn
. Change is backwards compatible. - REMOVED: Per-appender
:prefix
option dropped - was unnecessary. If an appender wants custom output formatting, it can do so w/o using an in-config formatter. - Update
refer-timbre
(add profiling, logf variations, etc.). - DEPRECATED: atom logging level is now located in
level-atom
rather thanconfig
. Old in-config levels will be respected (i.e. change is backwards compatible). - DEPRECATED: appender rate limits are now specified as
:rate-limit [ncalls window-msecs]
rather than:limit-per-msecs ncalls
. Change is backwards compatible. - Built-in appenders have been simplified using the new
default-output
appender arg. - Postal appender now generates a more useful subject in most cases.
- [#38] Broken namespace filter (mlb-).
- [unreported] Messages are now generated after middleware has been applied, allowing better filtering performance and more intuitive behaviour (e.g. changes to args in middleware will now automatically percolate to message content).
- [unreported] (logf "hello %s") was throwing due to lack of formatting args.
- Core:
getHostName
no longer runs on the main thread for better Android compatibility (AdamClements). - Profiling: added
defnp
macro. - Profiling: fix compile-time name creation: now runtime (aperiodic).
- Appenders: added rotating file appender (mopemope).
- Perf: add support for a compile-time logging level environment variable (
TIMBRE_LOG_LEVEL
). Seetimbre/compile-time-level
docstring for details. - Fix:
use-timbre
,str-println
bugs. - Fix: Null Pointer Exception in clj-stacktrace (bitemyapp).
- Added
:file
and:line
appender args. - Fixed
make-timestamp-fn
thread safety.
- Added
refer-timbre
for convenientlyrequire
ing standard timbre vars. - Postal appender now uses throwable as subject when no other args given.
log-errors
,log-and-rethrow-errors
now catch Throwable instead of Exception.
- Added
with-log-level
for thread-local logging levels:(with-level :trace (trace "This will log!"))
. Esp. useful for developing & unit tests, etc.
- Add socket, MongoDB appenders (thanks to emlyn).
- Added appenders: socket, IRC, MongoDB (CongoMongo). See README for details.
- Add
ex-data
output tostacktrace
fn. - Fixed a number of small bugs (mostly regressions from 1.x).
-
Refactor for integration with tools.logging.
-
BREAKING: Drop Clojure 1.3 support.
-
DEPRECATED:
:max-messages-per-msecs
appender arg ->:limit-per-msecs
. -
BREAKING:
:more
appender arg has been dropped.:message
arg is now a string of all arguments as joined bylogp
/logf
. Appenders that need unjoined logging arguments (i.e. raw arguments as given tologp
/logf
) should use the new:log-args
vector. -
BREAKING: Stacktraces are no longer automatically generated at the
log
-macro level. Stacktraces are now left as an appender implementation detail. A:throwable
appender argument has been added along with astacktrace
fn.