Every object that mixes in the Logging trait gets its own mutable vars for logWriter and logLevel, and if not set, shares a single global state in the LoggingDefaults object.
This is not thread safe. At minimum LoggingDefaults should be a ThreadLocal.
Furthermore, those objects don't need independent ability to specify a unique logger or logging level. They should be sharing a logger supplied by the application.