def __set__(self, instance: typing.Any, value: typing.Any) -> None:
if self.fset is None:<EOL><INDENT>raise AttributeError()<EOL><DEDENT>source: str = self.__get_obj_source(instance)<EOL>logger: logging.Logger = self._get_logger_for_instance(instance)<EOL>try:<EOL><INDENT>super(LogOnAccess, self).__set__(instance, value)<EOL>if self.log_success:<EOL><INDENT>logger.log(self.log_level, f"<STR_LIT>")<EOL><DEDENT><DEDENT>except Exception:<EOL><INDENT>if self.log_failure:<EOL><INDENT>logger.log(<EOL>self.exc_level, f"<STR_LIT>", exc_info=False<EOL>)<EOL><DEDENT>raise<EOL><DEDENT>
Set descriptor.

        :param instance: Owner class instance. Filled only if instance created, else None.
        :type instance: typing.Optional
        :param value: Value for setter
        :raises AttributeError: Setter is not available
        :raises Exception: Something goes wrong