Return a logger dict for app packages with the given log level and no
    propogation since the apps list is parsed/normalized to be the set of top-
    level apps.  The optional handlers argument is provided so that this pattern
    of app loggers can be used independently of the configure_logger method
    below, if desired.

def build_app_loggers(log_level, apps, handlers=None):
    """ Return a logger dict for app packages with the given log level and no
    propogation since the apps list is parsed/normalized to be the set of top-
    level apps.  The optional handlers argument is provided so that this pattern
    of app loggers can be used independently of the configure_logger method
    below, if desired.
    """

    # Use 'default' handler provided by DEFAULT_LOGGING config if
    # not supplied.
    if handlers is None:
        handlers = ['default']

    # The log config expects the handlers value to be a list, so let's
    # make sure of that here.
    if not isinstance(handlers, list):
        handlers = list(handlers)

    app_loggers = {}
    for app in apps:
        app_loggers[app] = {
            'level': log_level,
            'handlers': handlers,
            'propagate': False,
        }

    return app_loggers