docs: def set_logging_settings(profile, setting, value, store='local'):
      '''
      Configure logging settings for the Windows firewall.
  
      Args:
  
          profile (str):
              The firewall profile to configure. Valid options are:
  
              - domain
              - public
              - private
  
          setting (str):
              The logging setting to configure. Valid options are:
  
              - allowedconnections
              - droppedconnections
              - filename
              - maxfilesize
  
          value (str):
              The value to apply to the setting. Valid values are dependent upon
              the setting being configured. Valid options are:
  
              allowedconnections:
  
                  - enable
                  - disable
                  - notconfigured
  
              droppedconnections:
  
                  - enable
                  - disable
                  - notconfigured
  
              filename:
  
                  - Full path and name of the firewall log file
                  - notconfigured
  
              maxfilesize:
  
                  - 1 - 32767 (Kb)
                  - notconfigured
  
          store (str):
              The store to use. This is either the local firewall policy or the
              policy defined by local group policy. Valid options are:
  
              - lgpo
              - local
  
              Default is ``local``
  
      Returns:
          bool: ``True`` if successful
  
      Raises:
          CommandExecutionError: If an error occurs
          ValueError: If the parameters are incorrect
      '''
      # Input validation
      if profile.lower() not in ('domain', 'public', 'private'):
          raise ValueError('Incorrect profile: {0}'.format(profile))
      if setting.lower() not in ('allowedconnections',
                                 'droppedconnections',
                                 'filename',
                                 'maxfilesize'):
          raise ValueError('Incorrect setting: {0}'.format(setting))
      if setting.lower() in ('allowedconnections', 'droppedconnections'):
          if value.lower() not in ('enable', 'disable', 'notconfigured'):
              raise ValueError('Incorrect value: {0}'.format(value))
      # TODO: Consider adding something like the following to validate filename
      # https://stackoverflow.com/questions/9532499/check-whether-a-path-is-valid-in-python-without-creating-a-file-at-the-paths-ta
      if setting.lower() == 'maxfilesize':
          if value.lower() != 'notconfigured':
              # Must be a number between 1 and 32767
              try:
                  int(value)
              except ValueError:
                  raise ValueError('Incorrect value: {0}'.format(value))
              if not 1 <= int(value) <= 32767:
                  raise ValueError('Incorrect value: {0}'.format(value))
      # Run the command
      command = 'set {0}profile logging {1} {2}'.format(profile, setting, value)
      results = _netsh_command(command=command, store=store)
  
      # A successful run should return an empty list
      if results:
          raise CommandExecutionError('An error occurred: {0}'.format(results))
  
      return True