def get_key_name(self, environ, response_interception, exception=None):
        """Get the timer key name.

        :param environ: wsgi environment
        :type environ: dict
        :param response_interception: dictionary in form
            {'status': '<response status>', 'response_headers': [<response headers], 'exc_info': <exc_info>}
            This is the interception of what was passed to start_response handler.
        :type response_interception: dict
        :param exception: optional exception happened during the iteration of the response
        :type exception: Exception

        :return: string in form '{{UNDERSCORED_PATH}}.{{METHOD}}.{{STATUS_CODE}}'
        :rtype: str
        """
        status = response_interception.get('status')
        status_code = status.split()[0]  # Leave only the status code.
        # PATH_INFO can be empty, so falling back to '/' in that case
        path = CHAR_RE.sub(self.separator, (environ['PATH_INFO'].rstrip('\/') or '/')[1:])
        parts = [path, environ['REQUEST_METHOD'], status_code]
        if exception:
            parts.append(exception.__class__.__name__)
        return '.'.join(parts)
Get the timer key name.

        :param environ: wsgi environment
        :type environ: dict
        :param response_interception: dictionary in form
            {'status': '<response status>', 'response_headers': [<response headers], 'exc_info': <exc_info>}
            This is the interception of what was passed to start_response handler.
        :type response_interception: dict
        :param exception: optional exception happened during the iteration of the response
        :type exception: Exception

        :return: string in form '{{UNDERSCORED_PATH}}.{{METHOD}}.{{STATUS_CODE}}'
        :rtype: str