本文整理汇总了Python中raven.utils.stacks.get_culprit函数的典型用法代码示例。如果您正苦于以下问题:Python get_culprit函数的具体用法?Python get_culprit怎么用?Python get_culprit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_culprit函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_get_culprit_bad_module
def test_get_culprit_bad_module(self):
culprit = get_culprit([{"module": None, "function": "foo"}])
self.assertEquals(culprit, "<unknown>.foo")
culprit = get_culprit([{"module": "foo", "function": None}])
self.assertEquals(culprit, "foo.<unknown>")
culprit = get_culprit([{}])
self.assertEquals(culprit, "<unknown>.<unknown>")
示例2: 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)
示例3: 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)
示例4: 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
示例5: test_get_culprit_bad_module
def test_get_culprit_bad_module(self):
culprit = get_culprit([{
'module': None,
'function': 'foo',
}])
self.assertEquals(culprit, '<unknown>.foo')
culprit = get_culprit([{
'module': 'foo',
'function': None,
}])
self.assertEquals(culprit, 'foo.<unknown>')
culprit = get_culprit([{
}])
self.assertEquals(culprit, '<unknown>.<unknown>')
示例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()
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 as e:
self.logger.exception(e)
return {
'level': logging.ERROR,
'culprit': culprit,
'sentry.interfaces.Exception': {
'value': to_unicode(exc_value),
'type': str(exc_type),
'module': str(exc_module),
},
'sentry.interfaces.Stacktrace': {
'frames': frames
},
}
示例7: metlog_exceptor
def metlog_exceptor(self, logger=default_str_length, msg=default_msg,
str_length=default_str_length,
list_length=default_list_length,
exc_info=None):
if exc_info is None:
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}
self.metlog(type='stacktrace',
logger=logger,
fields=metlog_blob)
示例8: test_all_params
def test_all_params(self):
culprit = get_culprit([{
'module': 'package.name',
'function': 'foo',
}])
assert culprit == 'package.name in foo'
示例9: capture
def capture(self, event_type, data=None, date=None, time_spent=None, event_id=None,
extra=None, stack=None, **kwargs):
"""
Captures and processes an event and pipes it off to SentryClient.send.
To use structured data (interfaces) with capture:
>>> capture('Message', message='foo', data={
>>> 'sentry.interfaces.Http': {
>>> 'url': '...',
>>> 'data': {},
>>> 'query_string': '...',
>>> 'method': 'POST',
>>> },
>>> 'logger': 'logger.name',
>>> 'site': 'site.name',
>>> }, extra={
>>> 'key': 'value',
>>> })
The finalized ``data`` structure contains the following (some optional) builtin values:
>>> {
>>> # the culprit and version information
>>> 'culprit': 'full.module.name', # or /arbitrary/path
>>>
>>> # all detectable installed modules
>>> 'modules': {
>>> 'full.module.name': 'version string',
>>> },
>>>
>>> # arbitrary data provided by user
>>> 'extra': {
>>> 'key': 'value',
>>> }
>>> }
:param event_type: the module path to the Event class. Builtins can use shorthand class
notation and exclude the full module path.
:param data: the data base, useful for specifying structured data interfaces. Any key which contains a '.'
will be assumed to be a data interface.
:param date: the datetime of this event
:param time_spent: a float value representing the duration of the event
:param event_id: a 32-length unique string identifying this event
:param extra: a dictionary of additional standard metadata
:param culprit: a string representing the cause of this event (generally a path to a function)
:return: a 32-length string identifying this event
"""
if data is None:
data = {}
if extra is None:
extra = {}
if not date:
date = datetime.datetime.utcnow()
if stack is None:
stack = self.auto_log_stacks
if '.' not in event_type:
# Assume it's a builtin
event_type = 'raven.events.%s' % event_type
handler = self.get_handler(event_type)
result = handler.capture(**kwargs)
# data (explicit) culprit takes over auto event detection
culprit = result.pop('culprit', None)
if data.get('culprit'):
culprit = data['culprit']
for k, v in result.iteritems():
if k not in data:
data[k] = v
if stack and 'sentry.interfaces.Stacktrace' not in data:
if stack is True:
frames = iter_stack_frames()
else:
frames = stack
data.update({
'sentry.interfaces.Stacktrace': {
'frames': varmap(lambda k, v: shorten(v,
string_length=self.string_max_length, list_length=self.list_max_length),
get_stack_info(frames))
},
})
if 'sentry.interfaces.Stacktrace' in data and not culprit:
culprit = get_culprit(data['sentry.interfaces.Stacktrace']['frames'], self.include_paths, self.exclude_paths)
if not data.get('level'):
data['level'] = logging.ERROR
data['modules'] = get_versions(self.include_paths)
data['server_name'] = self.name
data.setdefault('extra', {})
data.setdefault('level', logging.ERROR)
# Shorten lists/strings
for k, v in extra.iteritems():
#.........这里部分代码省略.........
示例10: test_empty_function
def test_empty_function(self):
culprit = get_culprit([{
'module': 'foo',
'function': None,
}])
assert culprit == 'foo in ?'
示例11: test_no_module_or_function
def test_no_module_or_function(self):
culprit = get_culprit([{}])
assert culprit is None
示例12: test_empty_function
def test_empty_function(self):
culprit = get_culprit([{"module": "foo", "function": None}])
assert culprit == "foo in ?"
示例13: test_empty_module
def test_empty_module(self):
culprit = get_culprit([{
'module': None,
'function': 'foo',
}])
assert culprit == '? in foo'
示例14: test_empty_module
def test_empty_module(self):
culprit = get_culprit([{"module": None, "function": "foo"}])
assert culprit == "? in foo"
示例15: build_msg
def build_msg(self, event_type, data=None, date=None,
time_spent=None, extra=None, stack=None, public_key=None,
tags=None, fingerprint=None, **kwargs):
"""
Captures, processes and serializes an event into a dict object
The result of ``build_msg`` should be a standardized dict, with
all default values available.
"""
# create ID client-side so that it can be passed to application
event_id = uuid.uuid4().hex
data = merge_dicts(self.context.data, data)
data.setdefault('tags', {})
data.setdefault('extra', {})
if '.' not in event_type:
# Assume it's a builtin
event_type = 'raven.events.%s' % event_type
handler = self.get_handler(event_type)
result = handler.capture(**kwargs)
# data (explicit) culprit takes over auto event detection
culprit = result.pop('culprit', None)
if data.get('culprit'):
culprit = data['culprit']
for k, v in iteritems(result):
if k not in data:
data[k] = v
# auto_log_stacks only applies to events that are not exceptions
# due to confusion about which stack is which and the automatic
# application of stacktrace to exception objects by Sentry
if stack is None and 'exception' not in data:
stack = self.auto_log_stacks
if stack and 'stacktrace' not in data:
if stack is True:
frames = iter_stack_frames()
else:
frames = stack
stack_info = get_stack_info(
frames,
transformer=self.transform,
capture_locals=self.capture_locals,
)
data.update({
'stacktrace': stack_info,
})
if self.include_paths:
for frame in self._iter_frames(data):
if frame.get('in_app') is not None:
continue
path = frame.get('module')
if not path:
continue
if path.startswith('raven.'):
frame['in_app'] = False
else:
frame['in_app'] = (
any(path.startswith(x) for x in self.include_paths) and
not any(path.startswith(x) for x in self.exclude_paths)
)
if not culprit:
if 'stacktrace' in data:
culprit = get_culprit(data['stacktrace']['frames'])
elif 'exception' in data:
stacktrace = data['exception']['values'][0].get('stacktrace')
if stacktrace:
culprit = get_culprit(stacktrace['frames'])
if not data.get('level'):
data['level'] = kwargs.get('level') or logging.ERROR
if not data.get('server_name'):
data['server_name'] = self.name
if not data.get('modules'):
data['modules'] = self.get_module_versions()
if self.release is not None:
data['release'] = self.release
if self.environment is not None:
data['environment'] = self.environment
data['tags'] = merge_dicts(self.tags, data['tags'], tags)
data['extra'] = merge_dicts(self.extra, data['extra'], extra)
# Legacy support for site attribute
#.........这里部分代码省略.........