timbre/CHANGELOG.md

5.3 KiB

v3.0.0-SNAPSHOT / 2013-11-30 / UNRELEASED

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

Features

  • Android appender, courtesy of AdamClements.
  • Carmine (Redis) appender: query-able, rotating serialized log entries by log level. See appender docstring for details.
  • 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 and logf 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 to fmt-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).

Changes

  • EXPERIMENTAL: stacktraces now formatted with io.aviso/pretty rather than clj-stacktrace. Feedback on this (esp. coloring) welcome!
  • DEPRECATED: red, green, blue -> use color-str instead.
  • DEPRECATED: config prefix-fn has been replaced by the more flexible fmt-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 than config. 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.

Fixes

  • [#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).

v2.6.3 → v2.7.1

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

v2.5.0 → v2.6.3

  • Perf: add support for a compile-time logging level environment variable (TIMBRE_LOG_LEVEL). See timbre/compile-time-level docstring for details.
  • Fix: use-timbre, str-println bugs.
  • Fix: Null Pointer Exception in clj-stacktrace (bitemyapp).

v2.4.1 → v2.5.0

  • Added :file and :line appender args.
  • Fixed make-timestamp-fn thread safety.

v2.3.4 → v2.4.1

  • Added refer-timbre for conveniently requireing 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.

v2.2.0 → v2.3.4

  • Added with-log-level for thread-local logging levels: (with-level :trace (trace "This will log!")). Esp. useful for developing & unit tests, etc.

v2.1.2 → v2.2.0

  • Add socket, MongoDB appenders (thanks to emlyn).

v2.0.0 → v2.1.2

  • Added appenders: socket, IRC, MongoDB (CongoMongo). See README for details.
  • Add ex-data output to stacktrace fn.
  • Fixed a number of small bugs (mostly regressions from 1.x).

v1.6.0 → v2.0.0

  • 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 by logp/logf. Appenders that need unjoined logging arguments (i.e. raw arguments as given to logp/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 a stacktrace fn.

For older versions please see the commit history