本文整理汇总了Python中sentry.constants.LOG_LEVELS.get方法的典型用法代码示例。如果您正苦于以下问题:Python LOG_LEVELS.get方法的具体用法?Python LOG_LEVELS.get怎么用?Python LOG_LEVELS.get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sentry.constants.LOG_LEVELS
的用法示例。
在下文中一共展示了LOG_LEVELS.get方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
status = obj.status
status_details = {}
if attrs['snooze']:
if attrs['snooze'] < timezone.now() and status == GroupStatus.MUTED:
status = GroupStatus.UNRESOLVED
else:
status_details['snoozeUntil'] = attrs['snooze']
elif status == GroupStatus.UNRESOLVED and obj.is_over_resolve_age():
status = GroupStatus.RESOLVED
status_details['autoResolved'] = True
if status == GroupStatus.RESOLVED:
status_label = 'resolved'
if attrs['pending_resolution']:
status_details['inNextRelease'] = True
elif status == GroupStatus.MUTED:
status_label = 'muted'
elif status in [GroupStatus.PENDING_DELETION, GroupStatus.DELETION_IN_PROGRESS]:
status_label = 'pending_deletion'
elif status == GroupStatus.PENDING_MERGE:
status_label = 'pending_merge'
else:
status_label = 'unresolved'
permalink = absolute_uri(reverse('sentry-group', args=[
obj.organization.slug, obj.project.slug, obj.id]))
event_type = obj.data.get('type', 'default')
metadata = obj.data.get('metadata') or {
'title': obj.message_short,
}
return {
'id': str(obj.id),
'shareId': obj.get_share_id(),
'shortId': obj.qualified_short_id,
'count': str(obj.times_seen),
'userCount': attrs['user_count'],
'title': obj.message_short,
'culprit': obj.culprit,
'permalink': permalink,
'firstSeen': obj.first_seen,
'lastSeen': obj.last_seen,
'logger': obj.logger or None,
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'status': status_label,
'statusDetails': status_details,
'isPublic': obj.is_public,
'project': {
'name': obj.project.name,
'slug': obj.project.slug,
},
'type': event_type,
'metadata': metadata,
'numComments': obj.num_comments,
'assignedTo': attrs['assigned_to'],
'isBookmarked': attrs['is_bookmarked'],
'hasSeen': attrs['has_seen'],
'annotations': attrs['annotations'],
}
示例2: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
return {
'id': six.text_type(obj.id),
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'message': obj.message,
'culprit': obj.culprit,
'type': obj.get_event_type(),
'metadata': obj.get_event_metadata(),
'actor': attrs.get('user'),
}
示例3: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
status = obj.status
if attrs['snooze']:
if attrs['snooze'] < timezone.now() and status == GroupStatus.MUTED:
status = GroupStatus.UNRESOLVED
elif status == GroupStatus.UNRESOLVED and obj.is_over_resolve_age():
status = GroupStatus.RESOLVED
if status == GroupStatus.RESOLVED:
status_label = 'resolved'
elif status == GroupStatus.MUTED:
status_label = 'muted'
elif status in [GroupStatus.PENDING_DELETION, GroupStatus.DELETION_IN_PROGRESS]:
status_label = 'pending_deletion'
elif status == GroupStatus.PENDING_MERGE:
status_label = 'pending_merge'
else:
status_label = 'unresolved'
if obj.team:
permalink = absolute_uri(reverse('sentry-group', args=[
obj.organization.slug, obj.project.slug, obj.id]))
else:
permalink = None
return {
'id': str(obj.id),
'shareId': obj.get_share_id(),
'count': str(obj.times_seen),
'userCount': attrs['user_count'],
'title': obj.message_short,
'culprit': obj.culprit,
'permalink': permalink,
'firstSeen': obj.first_seen,
'lastSeen': obj.last_seen,
'timeSpent': obj.avg_time_spent,
'logger': obj.logger or None,
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'status': status_label,
'snoozeUntil': attrs['snooze'],
'isPublic': obj.is_public,
'project': {
'name': obj.project.name,
'slug': obj.project.slug,
},
'numComments': obj.num_comments,
'assignedTo': attrs['assigned_to'],
'isBookmarked': attrs['is_bookmarked'],
'hasSeen': attrs['has_seen'],
'annotations': attrs['annotations'],
}
示例4: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
status = obj.get_status()
if status == GroupStatus.RESOLVED:
status_label = 'resolved'
elif status == GroupStatus.MUTED:
status_label = 'muted'
else:
status_label = 'unresolved'
if obj.team:
permalink = absolute_uri(reverse('sentry-group', args=[
obj.organization.slug, obj.project.slug, obj.id]))
else:
permalink = None
d = {
'id': str(obj.id),
'shareId': obj.get_share_id(),
'count': str(obj.times_seen),
'title': obj.message_short,
'culprit': obj.culprit,
'permalink': permalink,
'firstSeen': obj.first_seen,
'lastSeen': obj.last_seen,
'timeSpent': obj.avg_time_spent,
'logger': obj.logger or None,
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'status': status_label,
'isPublic': obj.is_public,
'project': {
'name': obj.project.name,
'slug': obj.project.slug,
},
'numComments': obj.num_comments,
'assignedTo': attrs['assigned_to'],
'isBookmarked': attrs['is_bookmarked'],
'hasSeen': attrs['has_seen'],
'tags': attrs['tags'],
'annotations': attrs['annotations'],
}
return d
示例5: normalize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def normalize(self, request_env=None):
request_env = request_env or {}
data = self.data
errors = data['errors'] = []
# Ignore event meta data for now.
data.pop('_meta', None)
# Before validating with a schema, attempt to cast values to their desired types
# so that the schema doesn't have to take every type variation into account.
text = six.text_type
fp_types = six.string_types + six.integer_types + (float, )
def to_values(v):
return {'values': v} if v and isinstance(v, (tuple, list)) else v
def stringify(f):
if isinstance(f, float):
return text(int(f)) if abs(f) < (1 << 53) else None
return text(f)
casts = {
'environment': lambda v: text(v) if v is not None else v,
'fingerprint': lambda v: list(x for x in map(stringify, v) if x is not None) if isinstance(v, list) and all(isinstance(f, fp_types) for f in v) else v,
'release': lambda v: text(v) if v is not None else v,
'dist': lambda v: text(v).strip() if v is not None else v,
'time_spent': lambda v: int(v) if v is not None else v,
'tags': lambda v: [(text(v_k).replace(' ', '-').strip(), text(v_v).strip()) for (v_k, v_v) in dict(v).items()],
'timestamp': lambda v: process_timestamp(v),
'platform': lambda v: v if v in VALID_PLATFORMS else 'other',
'logentry': lambda v: v if isinstance(v, dict) else {'message': v},
# These can be sent as lists and need to be converted to {'values': [...]}
'exception': to_values,
'breadcrumbs': to_values,
'threads': to_values,
}
for c in casts:
if c in data:
try:
data[c] = casts[c](data[c])
except InvalidTimestamp as it:
errors.append({'type': it.args[0], 'name': c, 'value': data[c]})
del data[c]
except Exception as e:
errors.append({'type': EventError.INVALID_DATA, 'name': c, 'value': data[c]})
del data[c]
# raw 'message' is coerced to the Message interface, as its used for pure index of
# searchable strings. If both a raw 'message' and a Message interface exist, try and
# add the former as the 'formatted' attribute of the latter.
# See GH-3248
msg_str = data.pop('message', None)
if msg_str:
msg_if = data.get('logentry')
msg_meta = data.get('_meta', {}).get('message')
if not msg_if:
msg_if = data['logentry'] = {'message': msg_str}
if msg_meta:
data.setdefault('_meta', {}).setdefault('logentry', {})['message'] = msg_meta
if msg_if.get('message') != msg_str:
if not msg_if.get('formatted'):
msg_if['formatted'] = msg_str
if msg_meta:
data.setdefault('_meta', {}).setdefault(
'logentry', {})['formatted'] = msg_meta
# Fill in ip addresses marked as {{auto}}
client_ip = request_env.get('client_ip')
if client_ip:
if get_path(data, ['sentry.interfaces.Http', 'env', 'REMOTE_ADDR']) == '{{auto}}':
data['sentry.interfaces.Http']['env']['REMOTE_ADDR'] = client_ip
if get_path(data, ['request', 'env', 'REMOTE_ADDR']) == '{{auto}}':
data['request']['env']['REMOTE_ADDR'] = client_ip
if get_path(data, ['sentry.interfaces.User', 'ip_address']) == '{{auto}}':
data['sentry.interfaces.User']['ip_address'] = client_ip
if get_path(data, ['user', 'ip_address']) == '{{auto}}':
data['user']['ip_address'] = client_ip
# Validate main event body and tags against schema.
# XXX(ja): jsonschema does not like CanonicalKeyDict, so we need to pass
# in the inner data dict.
is_valid, event_errors = validate_and_default_interface(data.data, 'event')
errors.extend(event_errors)
if 'tags' in data:
is_valid, tag_errors = validate_and_default_interface(data['tags'], 'tags', name='tags')
errors.extend(tag_errors)
# Validate interfaces
for k in list(iter(data)):
if k in CLIENT_RESERVED_ATTRS:
continue
value = data.pop(k)
#.........这里部分代码省略.........
示例6: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
status = obj.status
status_details = {}
if attrs['ignore_until']:
snooze = attrs['ignore_until']
if snooze.is_valid(group=obj):
# counts return the delta remaining when window is not set
status_details.update(
{
'ignoreCount': (
snooze.count - (obj.times_seen - snooze.state['times_seen'])
if snooze.count and not snooze.window else snooze.count
),
'ignoreUntil':
snooze.until,
'ignoreUserCount': (
snooze.user_count - (attrs['user_count'] - snooze.state['users_seen'])
if snooze.user_count and not snooze.user_window else snooze.user_count
),
'ignoreUserWindow':
snooze.user_window,
'ignoreWindow':
snooze.window,
'actor':
attrs['ignore_actor'],
}
)
else:
status = GroupStatus.UNRESOLVED
if status == GroupStatus.UNRESOLVED and obj.is_over_resolve_age():
status = GroupStatus.RESOLVED
status_details['autoResolved'] = True
if status == GroupStatus.RESOLVED:
status_label = 'resolved'
if attrs['resolution_type'] == 'release':
res_type, res_version, _ = attrs['resolution']
if res_type in (GroupResolution.Type.in_next_release, None):
status_details['inNextRelease'] = True
elif res_type == GroupResolution.Type.in_release:
status_details['inRelease'] = res_version
status_details['actor'] = attrs['resolution_actor']
elif attrs['resolution_type'] == 'commit':
status_details['inCommit'] = attrs['resolution']
elif status == GroupStatus.IGNORED:
status_label = 'ignored'
elif status in [GroupStatus.PENDING_DELETION, GroupStatus.DELETION_IN_PROGRESS]:
status_label = 'pending_deletion'
elif status == GroupStatus.PENDING_MERGE:
status_label = 'pending_merge'
else:
status_label = 'unresolved'
# If user is not logged in and member of the organization,
# do not return the permalink which contains private information i.e. org name.
if user.is_authenticated() and user.get_orgs().filter(id=obj.organization.id).exists():
permalink = absolute_uri(
reverse('sentry-group', args=[obj.organization.slug, obj.project.slug, obj.id])
)
else:
permalink = None
subscription_details = None
if attrs['subscription'] is not disabled:
is_subscribed, subscription = attrs['subscription']
if subscription is not None and subscription.is_active:
subscription_details = {
'reason': SUBSCRIPTION_REASON_MAP.get(
subscription.reason,
'unknown',
),
}
else:
is_subscribed = False
subscription_details = {
'disabled': True,
}
share_id = attrs['share_id']
return {
'id': six.text_type(obj.id),
'shareId': share_id,
'shortId': obj.qualified_short_id,
'count': six.text_type(attrs['times_seen']),
'userCount': attrs['user_count'],
'title': obj.title,
'culprit': obj.culprit,
'permalink': permalink,
'firstSeen': attrs['first_seen'],
'lastSeen': attrs['last_seen'],
'logger': obj.logger or None,
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'status': status_label,
'statusDetails': status_details,
'isPublic': share_id is not None,
'project': {
'id': six.text_type(obj.project.id),
'name': obj.project.name,
'slug': obj.project.slug,
},
#.........这里部分代码省略.........
示例7: serialize
# 需要导入模块: from sentry.constants import LOG_LEVELS [as 别名]
# 或者: from sentry.constants.LOG_LEVELS import get [as 别名]
def serialize(self, obj, attrs, user):
status = obj.status
status_details = {}
if attrs['ignore_duration']:
if attrs['ignore_duration'] < timezone.now() and status == GroupStatus.IGNORED:
status = GroupStatus.UNRESOLVED
else:
status_details['ignoreUntil'] = attrs['ignore_duration']
elif status == GroupStatus.UNRESOLVED and obj.is_over_resolve_age():
status = GroupStatus.RESOLVED
status_details['autoResolved'] = True
if status == GroupStatus.RESOLVED:
status_label = 'resolved'
if attrs['pending_resolution']:
status_details['inNextRelease'] = True
elif status == GroupStatus.IGNORED:
status_label = 'ignored'
elif status in [GroupStatus.PENDING_DELETION, GroupStatus.DELETION_IN_PROGRESS]:
status_label = 'pending_deletion'
elif status == GroupStatus.PENDING_MERGE:
status_label = 'pending_merge'
else:
status_label = 'unresolved'
# If user is not logged in and member of the organization,
# do not return the permalink which contains private information i.e. org name.
if user.is_authenticated() and user.get_orgs().filter(id=obj.organization.id).exists():
permalink = absolute_uri(reverse('sentry-group', args=[
obj.organization.slug, obj.project.slug, obj.id]))
else:
permalink = None
is_subscribed, subscription = attrs['subscription']
return {
'id': six.text_type(obj.id),
'shareId': obj.get_share_id(),
'shortId': obj.qualified_short_id,
'count': six.text_type(obj.times_seen),
'userCount': attrs['user_count'],
'title': obj.title,
'culprit': obj.culprit,
'permalink': permalink,
'firstSeen': obj.first_seen,
'lastSeen': obj.last_seen,
'logger': obj.logger or None,
'level': LOG_LEVELS.get(obj.level, 'unknown'),
'status': status_label,
'statusDetails': status_details,
'isPublic': obj.is_public,
'project': {
'name': obj.project.name,
'slug': obj.project.slug,
},
'type': obj.get_event_type(),
'metadata': obj.get_event_metadata(),
'numComments': obj.num_comments,
'assignedTo': attrs['assigned_to'],
'isBookmarked': attrs['is_bookmarked'],
'isSubscribed': is_subscribed,
'subscriptionDetails': {
'reason': SUBSCRIPTION_REASON_MAP.get(
subscription.reason,
'unknown',
),
} if is_subscribed and subscription is not None else None,
'hasSeen': attrs['has_seen'],
'annotations': attrs['annotations'],
}