<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def configure_loggers_from_string(log_configuration_str, log_filename=DEFAULT_LOG_FILENAME, connection=None, propagate=False):
 # pylint: disable=line-too-long """ Configure the pywbem loggers and optionally activate WBEM connections for logging and setting a log detail level, from a log configuration string. This is most useful in defining the loggers from a command line tool such as pywbemcli so the complete logger configuration can be compressed into a single command line string. Parameters: log_configuration_str (:term:`string`):
 The log configuration string, in the following format:: log_specs := log_spec [ ',' log_spec ] log_spec := logger_simple_name [ '=' [ log_dest ] [ ":" [ detail_level ]]]] where: * ``logger_simple_name``: Simple logger name. Must be one of the strings in the :data:`~pywbem._logging.LOGGER_SIMPLE_NAMES` list. * ``log_dest``: Log destination. Must be one of the strings in the :data:`~pywbem._logging.LOG_DESTINATIONS` list. Default is :data:`~pywbem._logging.DEFAULT_LOG_DESTINATION`. * ``detail_level``: Log detail level. Must be one of the strings in the :data:`~pywbem._logging.LOG_DETAIL_LEVELS` list. Default is :data:`~pywbem._logging.DEFAULT_LOG_DETAIL_LEVEL`. log_filename (:term:`string`):
 Path name of the log file (required if any log destination is `'file'`; otherwise ignored). connection (:class:`~pywbem.WBEMConnection` or :class:`py:bool` or `None`):
 WBEM connection(s) that should be affected for activation and for setting the detail level. If it is a :class:`py:bool`, the information for activating logging and for the detail level of the affected loggers will be stored for use by subsequently created :class:`~pywbem.WBEMConnection` objects. A value of `True` will store the information to activate the connections for logging, and will add the detail level for the logger(s). A value of `False` will reset the stored information for future connections to be deactivated with no detail levels specified. If it is a :class:`~pywbem.WBEMConnection` object, logging will be activated for that WBEM connection only and the specified detail level will be set for the affected pywbem loggers on the connection. If `None`, no WBEM connection will be activated for logging. propagate (:class:`py:bool`):
 Flag controlling whether the affected pywbem logger should propagate log events to its parent loggers. Raises: ValueError: Invalid input parameters (loggers remain unchanged). Examples for `log_configuration_str`:: 'api=stderr:summary' # Set 'pywbem.api' logger to stderr output with # summary detail level. 'http=file' # Set 'pywbem.http' logger to file output with # default detail level. 'api=stderr:summary' # Set 'pywbem.api' logger to file output with # summary output level. 'all=file:1000' # Set both pywbem loggers to file output with # a maximum of 1000 characters per log record. 'api=stderr,http=file' # Set 'pywbem.api' logger to stderr output and # 'pywbem.http' logger to file output, both # with default detail level. """
  # noqa: E501
    # pylint: enable=line-too-long

    log_specs = log_configuration_str.split(',')
    for log_spec in log_specs:
        spec_split = log_spec.strip('=').split("=")
        simple_name = spec_split[0]
        if not simple_name:
            raise ValueError(
                _format("Simple logger name missing in log spec: {0}",
                        log_spec))
        if len(spec_split) == 1:
            log_dest = DEFAULT_LOG_DESTINATION
            detail_level = DEFAULT_LOG_DETAIL_LEVEL
        elif len(spec_split) == 2:
            val_split = spec_split[1].strip(':').split(':')
            log_dest = val_split[0] or None
            if len(val_split) == 1:
                detail_level = DEFAULT_LOG_DETAIL_LEVEL
            elif len(val_split) == 2:
                detail_level = val_split[1] or None
            else:  # len(val_split) > 2
                raise ValueError(
                    _format("Too many components separated by : in log spec: "
                            "{0}", log_spec))
        else:  # len(spec_split) > 2:
            raise ValueError(
                _format("Too many components separated by = in log spec: "
                        "{0}", log_spec))

        # Convert to integer, if possible
        if detail_level:
            try:
                detail_level = int(detail_level)
            except ValueError:
                pass

        configure_logger(
            simple_name,
            log_dest=log_dest,
            detail_level=detail_level,
            log_filename=log_filename,
            connection=connection,
            propagate=propagate)