当前位置: 首页>>代码示例>>Python>>正文


Python stacks.get_stack_info函数代码示例

本文整理汇总了Python中raven.utils.stacks.get_stack_info函数的典型用法代码示例。如果您正苦于以下问题:Python get_stack_info函数的具体用法?Python get_stack_info怎么用?Python get_stack_info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了get_stack_info函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: capture

    def capture(self, exc_info=None, **kwargs):
        if not exc_info or exc_info is True:
            exc_info = sys.exc_info()

        if not exc_info:
            raise ValueError('No exception found')

        exc_type, exc_value, exc_traceback = exc_info

        try:
            frames = get_stack_info(
                iter_traceback_frames(exc_traceback),
                transformer=self.transform)

            exc_module = getattr(exc_type, '__module__', None)
            if exc_module:
                exc_module = str(exc_module)
            exc_type = getattr(exc_type, '__name__', '<unknown>')

            return {
                'level': kwargs.get('level', logging.ERROR),
                'sentry.interfaces.Exception': {
                    'value': to_unicode(exc_value),
                    'type': str(exc_type),
                    'module': to_unicode(exc_module),
                },
                'sentry.interfaces.Stacktrace': {
                    'frames': frames
                },
            }
        finally:
            try:
                del exc_type, exc_value, exc_traceback
            except Exception as e:
                self.logger.exception(e)
开发者ID:carljm,项目名称:raven-python,代码行数:35,代码来源:events.py

示例2: _add_exception_info

    def _add_exception_info(self, data, record):
        """Adds sentry interfaces Exception and Stacktrace.

        See
        http://sentry.readthedocs.org/en/latest/developer/interfaces/index.html
        for more information on Sentry interfaces."""
        type_, value, tb = record.exc_info

        data[SENTRY_INTERFACES_EXCEPTION] = {"type": str(type_),
                                               "value": str(value),
                                               "module": record.module
                                               }

        stack = inspect.getinnerframes(tb)

        # This next python statement copied pretty much verbatim from
        # raven-python (https://github.com/getsentry/raven-python).
        #
        # raven-python is:
        #
        # Copyright (c) 2009 David Cramer and individual contributors.
        # All rights reserved.
        frames = varmap(
            lambda k, v: shorten(
                v,
                string_length=self.string_max_length,
                list_length=self.list_max_length),
            get_stack_info(iter_stack_frames(stack)))
        # end of copied code

        data['sentry.interfaces.Stacktrace'] = {
            'frames': frames }

        return data
开发者ID:ronaldevers,项目名称:snitch,代码行数:34,代码来源:log2json.py

示例3: test_bad_locals_in_frame

    def test_bad_locals_in_frame(self):
        frame = Mock()
        frame.f_locals = Context({
            'foo': 'bar',
            'biz': 'baz',
        })
        frame.f_lineno = 1
        frame.f_globals = {}
        frame.f_code.co_filename = __file__
        frame.f_code.co_name = __name__

        frames = [(frame, 1)]
        results = get_stack_info(frames)
        assert len(results['frames']) == 1
        result = results['frames'][0]
        assert 'vars' in result
        if PY3:
            expected = {
                "foo": "'bar'",
                "biz": "'baz'",
            }
        else:
            expected = {
                "foo": "u'bar'",
                "biz": "u'baz'",
            }
        assert result['vars'] == expected
开发者ID:ehfeng,项目名称:raven-python,代码行数:27,代码来源:tests.py

示例4: trace_exception

def trace_exception(e):
    try:
        exc_info = sys.exc_info()
        frames = iter_traceback_frames(exc_info[-1])
        trace(type_=EventType.exception, exc=str(e), stack=get_stack_info(frames))
    except Exception:
        pass
开发者ID:thulio,项目名称:hived,代码行数:7,代码来源:trail.py

示例5: metlog_call

    def metlog_call(self, *args, **kwargs):
        if self.kwargs is None:
            self.kwargs = {}
        str_length = self.kwargs.pop('str_length', 200)
        list_length = self.kwargs.pop('list_length', 50)

        try:
            result = self._fn(*args, **kwargs)
            return result
        except Exception, e:
            exc_info = sys.exc_info()
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(lambda k, v: shorten(v,
                string_length=str_length,
                list_length=list_length),
                get_stack_info(iter_traceback_frames(exc_traceback)))

            culprit = get_culprit(frames)

            metlog_blob = {'culprit': culprit,
                    'frames': frames}

            CLIENT_WRAPPER.client.metlog('stacktrace',
                    logger=self._fn_fq_name,
                    fields=metlog_blob)

            # re-raise the exception so that callers up the call stack
            # have a chance to do the right thing
            raise
开发者ID:crankycoder,项目名称:metlog-raven,代码行数:30,代码来源:raven_plugin.py

示例6: capture

    def capture(self, exc_info=None, **kwargs):
        new_exc_info = False
        if not exc_info or exc_info is True:
            new_exc_info = True
            exc_info = sys.exc_info()

        try:
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(lambda k, v: shorten(v), get_stack_info(iter_traceback_frames(exc_traceback)))

            culprit = get_culprit(frames, self.client.include_paths, self.client.exclude_paths)

            if hasattr(exc_type, '__module__'):
                exc_module = exc_type.__module__
                exc_type = exc_type.__name__
            else:
                exc_module = None
                exc_type = exc_type.__name__
        finally:
            if new_exc_info:
                try:
                    del exc_info
                    del exc_traceback
                except Exception, e:
                    self.logger.exception(e)
开发者ID:Ender27182818,项目名称:raven,代码行数:26,代码来源:events.py

示例7: test_bad_locals_in_frame

    def test_bad_locals_in_frame(self):
        frame = Mock()
        frame.f_locals = Context({
            'foo': 'bar',
            'biz': 'baz',
        })
        frame.f_lineno = 1
        frame.f_globals = {}
        frame.f_code.co_filename = __file__
        frame.f_code.co_name = __name__

        frames = [(frame, 1)]
        results = get_stack_info(frames)
        self.assertEquals(len(results), 1)
        result = results[0]
        assert 'vars' in result
        if six.PY3:
            expected = {
                "'foo'": "'bar'",
                "'biz'": "'baz'",
            }
        else:
            expected = {
                "u'foo'": "u'bar'",
                "u'biz'": "u'baz'",
            }
        assert result['vars'] == expected
开发者ID:1Anastaska,项目名称:raven-python,代码行数:27,代码来源:tests.py

示例8: capture

    def capture(self, exc_info=None, **kwargs):
        new_exc_info = False
        if not exc_info or exc_info is True:
            new_exc_info = True
            exc_info = sys.exc_info()

        if not exc_info:
            raise ValueError('No exception found')

        try:
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(lambda k, v: shorten(v,
                string_length=self.client.string_max_length, list_length=self.client.list_max_length),
            get_stack_info(iter_traceback_frames(exc_traceback)))

            culprit = get_culprit(frames, self.client.include_paths, self.client.exclude_paths)

            exc_module = getattr(exc_type, '__module__', None)
            exc_type = getattr(exc_type, '__name__', '<unknown>')
        finally:
            if new_exc_info:
                try:
                    del exc_info
                    del exc_traceback
                except Exception, e:
                    self.logger.exception(e)
开发者ID:AstromechZA,项目名称:raven-python,代码行数:27,代码来源:events.py

示例9: capture

    def capture(self, exc_info=None, **kwargs):
        if not exc_info or exc_info is True:
            exc_info = sys.exc_info()

        if not exc_info:
            raise ValueError("No exception found")

        exc_type, exc_value, exc_traceback = exc_info

        try:
            frames = get_stack_info(iter_traceback_frames(exc_traceback), transformer=self.transform)

            exc_module = getattr(exc_type, "__module__", None)
            if exc_module:
                exc_module = str(exc_module)
            exc_type = getattr(exc_type, "__name__", "<unknown>")

            return {
                "level": logging.ERROR,
                "sentry.interfaces.Exception": {
                    "value": to_unicode(exc_value),
                    "type": str(exc_type),
                    "module": to_unicode(exc_module),
                },
                "sentry.interfaces.Stacktrace": {"frames": frames},
            }
        finally:
            try:
                del exc_type, exc_value, exc_traceback
            except Exception as e:
                self.logger.exception(e)
开发者ID:flupke,项目名称:raven,代码行数:31,代码来源:events.py

示例10: capture

    def capture(self, exc_info=None, **kwargs):
        new_exc_info = False
        if not exc_info or exc_info is True:
            new_exc_info = True
            exc_info = sys.exc_info()

        if not exc_info:
            raise ValueError("No exception found")

        try:
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(
                lambda k, v: shorten(
                    v, string_length=self.client.string_max_length, list_length=self.client.list_max_length
                ),
                get_stack_info(
                    iter_traceback_frames(exc_traceback),
                    list_max_length=self.client.list_max_length,
                    string_max_length=self.client.string_max_length,
                ),
            )

            exc_module = getattr(exc_type, "__module__", None)
            if exc_module:
                exc_module = str(exc_module)
            exc_type = getattr(exc_type, "__name__", "<unknown>")
        finally:
            if new_exc_info:
                try:
                    del exc_info
                    del exc_traceback
                except Exception, e:
                    self.logger.exception(e)
开发者ID:huoxudong125,项目名称:socorro,代码行数:34,代码来源:events.py

示例11: create_from_exception

    def create_from_exception(self, exc_info=None, **kwargs):
        """
        Creates an event from an exception.

        >>> try:
        >>>     exc_info = sys.exc_info()
        >>>     client.create_from_exception(exc_info)
        >>> finally:
        >>>     del exc_info

        If exc_info is not provided, or is set to True, then this method will
        perform the ``exc_info = sys.exc_info()`` and the requisite clean-up
        for you.
        """
        new_exc = False
        if not exc_info or exc_info is True:
            new_exc = True
            exc_info = sys.exc_info()

        data = kwargs.pop('data', {}) or {}

        try:
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(shorten, get_stack_info(iter_traceback_frames(exc_traceback)))

            if hasattr(exc_type, '__class__'):
                exc_module = exc_type.__class__.__module__
            else:
                exc_module = None

            data['__sentry__'] = {}
            data['__sentry__']['frames'] = frames
            data['__sentry__']['exception'] = [exc_module, exc_value.args]

            tb_message = '\n'.join(traceback.format_exception(exc_type, exc_value, exc_traceback))

            kwargs.setdefault('message', transform(force_unicode(exc_value)))

            return self.process(
                class_name=exc_type.__name__,
                traceback=tb_message,
                data=data,
                **kwargs
            )
        finally:
            # It's important that we cleanup the frames object (specifically exc_info[2])
            # to ensure that GC can happen properly.
            if new_exc:
                try:
                    del exc_info
                    del exc_traceback
                except Exception, e:
                    logger.exception(e)
开发者ID:d1on,项目名称:raven,代码行数:54,代码来源:base.py

示例12: create_from_exception

    def create_from_exception(self, exc_info=None, **kwargs):
        """
        Creates an event from an exception.

        >>> try:
        >>>     exc_info = sys.exc_info()
        >>>     client.create_from_exception(exc_info)
        >>> finally:
        >>>     del exc_info
        """
        new_exc = bool(exc_info)
        if not exc_info or exc_info is True:
            exc_info = sys.exc_info()

        data = kwargs.pop('data', {}) or {}

        try:
            exc_type, exc_value, exc_traceback = exc_info

            frames = varmap(shorten, get_stack_info(iter_traceback_frames(exc_traceback)))

            if hasattr(exc_type, '__class__'):
                exc_module = exc_type.__class__.__module__
            else:
                exc_module = None

            data['__sentry__'] = {}
            data['__sentry__']['frames'] = frames
            data['__sentry__']['exception'] = [exc_module, exc_value.args]

            tb_message = '\n'.join(traceback.format_exception(exc_type, exc_value, exc_traceback))

            kwargs.setdefault('message', transform(force_unicode(exc_value)))

            return self.process(
                class_name=exc_type.__name__,
                traceback=tb_message,
                data=data,
                **kwargs
            )
        finally:
            if new_exc:
                try:
                    del exc_info
                except Exception, e:
                    logger.exception(e)
开发者ID:maximbo,项目名称:raven,代码行数:46,代码来源:base.py

示例13: test_max_frames

    def test_max_frames(self):
        frames = []
        for x in range(10):
            frame = Mock()
            frame.f_locals = {}
            frame.f_lineno = None
            frame.f_globals = {}
            frame.f_code.co_filename = str(x)
            frame.f_code.co_name = __name__
            frames.append((frame, 1))

        results = get_stack_info(frames, max_frames=4)
        assert results["frames_omitted"] == (3, 9)
        assert len(results["frames"]) == 4
        assert results["frames"][0]["filename"] == "0"
        assert results["frames"][1]["filename"] == "1"
        assert results["frames"][2]["filename"] == "8"
        assert results["frames"][3]["filename"] == "9"
开发者ID:inspirehep,项目名称:raven-python,代码行数:18,代码来源:tests.py

示例14: test_bad_locals_in_frame

    def test_bad_locals_in_frame(self):
        frame = Mock()
        frame.f_locals = Context({"foo": "bar", "biz": "baz"})
        frame.f_lineno = 1
        frame.f_globals = {}
        frame.f_code.co_filename = __file__
        frame.f_code.co_name = __name__

        frames = [(frame, 1)]
        results = get_stack_info(frames)
        assert len(results["frames"]) == 1
        result = results["frames"][0]
        assert "vars" in result
        if six.PY3:
            expected = {"foo": "'bar'", "biz": "'baz'"}
        else:
            expected = {"foo": "u'bar'", "biz": "u'baz'"}
        assert result["vars"] == expected
开发者ID:PierreF,项目名称:raven-python,代码行数:18,代码来源:tests.py

示例15: test_max_frames

    def test_max_frames(self):
        frames = []
        for x in xrange(10):
            frame = Mock()
            frame.f_locals = {}
            frame.f_lineno = None
            frame.f_globals = {}
            frame.f_code.co_filename = str(x)
            frame.f_code.co_name = __name__
            frames.append((frame, 1))

        results = get_stack_info(frames, max_frames=4)
        assert results['frames_omitted'] == (3, 9)
        assert len(results['frames']) == 4
        assert results['frames'][0]['filename'] == '0'
        assert results['frames'][1]['filename'] == '1'
        assert results['frames'][2]['filename'] == '8'
        assert results['frames'][3]['filename'] == '9'
开发者ID:TracyWebTech,项目名称:raven-python,代码行数:18,代码来源:tests.py


注:本文中的raven.utils.stacks.get_stack_info函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。