Each build is now over 40mb logs.
A lot of DEBUG logging was left on for test failures that have been
fixed. Added an issue # for ones that are still valid or if if it on
as the test verifies debug
* The filter is used by the LoggingAdapter before publishing
to the event bus
* Slf4jLoggingFilter uses backend log level configuration
(e.g. logback.xml)
* because it is not referentially transparent; normally we reserved parens for
side-effecting code but given how people thoughtlessly close over it we revised
that that decision for sender
* caller can still omit parens
* Added LogEvent subclasses with new field for transporting the MDC custom values.
* Slf4jLogger now takes MDC values from new LogEvent field, puts all in MDC before appending the log, and removes all after.
* New trait DiagnosticLoggingAdapter was introduced, which extends LoggingAdapter and adds MDC support with methods to get, set and clear MDC values.
* New factory method added to Logging for getting loggers with MDC support.
* BusLogging was changed to create new LogEvents including the MDC values.
* Actors can mixin with DiagnosticActorLogging which defines a diagnostic logger "log", has a hook to override for defining MDC values per message, and overrides aroundReceive for setting and clearing MDC around receive execution.
* Proper documentation was added for Scala and Java under the Logging/Slf4j section.
* Rename config akka.event-handlers to akka.loggers
* Rename config akka.event-handler-startup-timeout to
akka.logger-startup-timeout
* Rename JulEventHandler to JavaLogger
* Rename Slf4jEventHandler to Slf4jLogger
* Change all places in tests and docs
* Deprecation, old still works, but with warnings
* Migration guide
* Test for the deprecated event-handler config
- it is customary to use class name for categorizing logs, hence we
should support it; class is taken from logSource.getClass
- update SLF4J module to use logClass as category and set logSource in
MDC "akkaSource"
- add docs
- LoggingBus.startDefaultLoggers would not wait for their
initialization, leading to non-reception of Mute messages at the very
start of test, which would in turn fail those test which require a
number of occurrences.
- fix that by having each logger respond to InitializeLogger(bus) as
soon as subscriptions are done (max 3 seconds, else Warning)
- make akka.actor.simpleName not use String.replaceAll (performance
oversight on my part)
- rename MainBusSpec object to EventStreamSpec
- give loggers nicer names: "log<id>-<classname>"
most tests passing, everything compiling, but docs not updated and nasty
thread-leak preventing me from running the whole test-suite (which is
the reason for this commit: I want to chase down that one first).
- the app.mainbus is classified by Class[_] (currently lookup, will
possibly change to sub-class-aware) and accepts AnyRef messages
- LoggingBus handles akka.event-handlers from config specially:
+ start them as system services, supervised by SystemGuardian
+ keep their subscriptions in sync when logLevel_= is called
+ send them InitializeLogger(bus) message before subscribing them (so
they can register for extras like Mute/UnMute)
- two-phased start-up: first phase with actor-less stdout logging, then
subscription of config loggers, then remove stdout logger (logLevels
configurable separately)
- MainBusReaper watches registered receivers and unsubscribes them upon
death (started in phase 2)
- logger factory on Logging object, needs app/bus and log source;
default instance in app.log