The compile-time filtering can trip up in surprising ways, and doesn't
work with tools.logging.
This commit switches back to a runtime ns filter which is a teeny, tiny
bit slower - but always predictable.
BREAKING CHANGES:
* Custom appenders that rely on the :more argument will no longer function correctly.
* Stacktraces are no longer automatically generated at the `log`-macro level, but are
left as an appender implementation detail. A :throwable appender argument has been added
along with a `stacktrace` fn.
MIGRATION GUIDE:
* :message 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.
MOTIVATION:
The :more argument was always kind of manky.
By joining logging arguments at the `log`-macro level, we simplify appender
implementations and allow the use of different joining strategies like `logp` and
`logf`.
This approach also fits better with the `tools.logging` API, allowing a cleaner
Logger implementation.
* Appenders are now decorated via 2 separate mechanisms: a per-appender
decorator (as before), and a new per-juxt (i.e. combined) decorator.
The per-juxt wrapping provides a performance-conscious hook for
higher-level facilities like the new middleware feature.
* Moved compile-time config wrapping from per-appender to per-juxt,
improving performance.
* Fixed appender wrapper ordering.