In our case we are modeling the behavior of a legacy logging system, so we have extended LoggerContext and override customizeNewLogger() to inject the logger with existing appenders and attributes that fine tune the logging according to the legacy product's settings.