예제 #1
0
    def from_exc_info(self, exc_info=None):
        if exc_info is None:
            # Retrieve `exc_info` of last exception
            exc_info = sys.exc_info()

        # Create exception
        exception = self.model(
            type=ErrorHasher.exc_type(exc_info[0]),
            message=ErrorHasher.exc_message(exc_info[1]),
            traceback=ErrorHasher.exc_traceback(exc_info[2]),

            timestamp=datetime.utcnow(),
            version_base=VERSION_BASE,
            version_branch=VERSION_BRANCH
        )

        # Calculate exception hash
        exception.hash = ErrorHasher.hash(exception)

        # Create/Lookup message for exception
        exception.error = MessageManager.get.from_exception(exception)

        # Save exception details
        exception.save()

        return exception, exception.error
예제 #2
0
    def from_exc_info(self, exc_info=None):
        if exc_info is None:
            # Retrieve `exc_info` of last exception
            exc_info = sys.exc_info()

        # Parse exception
        message_type = Message.Type.Exception

        try:
            message_type, exc_info = self._parse_exception(exc_info)
        except Exception as ex:
            log.warn('Unable to parse exception: %s', ex, exc_info=True)

        # Create exception
        exception = self.model(
            type=ErrorHasher.exc_type(exc_info[0]),
            message=ErrorHasher.exc_message(exc_info[1]),
            traceback=ErrorHasher.exc_traceback(exc_info[2]),

            timestamp=datetime.utcnow(),
            version_base=VERSION_BASE,
            version_branch=VERSION_BRANCH
        )

        # Calculate exception hash
        exception.hash = ErrorHasher.hash(
            exception,
            include_traceback=message_type == Message.Type.Exception
        )

        # Create/Lookup message for exception
        exception.error = MessageManager.get.from_exception(
            exception,
            message_type=message_type
        )

        # Save exception details
        exception.save()

        return exception, exception.error
예제 #3
0
    def from_exc_info(self, exc_info=None):
        if exc_info is None:
            # Retrieve `exc_info` of last exception
            exc_info = sys.exc_info()

        # Create exception
        exception = self.model(type=ErrorHasher.exc_type(exc_info[0]),
                               message=ErrorHasher.exc_message(exc_info[1]),
                               traceback=ErrorHasher.exc_traceback(
                                   exc_info[2]),
                               timestamp=datetime.utcnow(),
                               version_base=VERSION_BASE,
                               version_branch=VERSION_BRANCH)

        # Calculate exception hash
        exception.hash = ErrorHasher.hash(exception)

        # Create/Lookup message for exception
        exception.error = MessageManager.get.from_exception(exception)

        # Save exception details
        exception.save()

        return exception, exception.error