本文整理汇总了Python中sentry.constants.LOG_LEVELS类的典型用法代码示例。如果您正苦于以下问题:Python LOG_LEVELS类的具体用法?Python LOG_LEVELS怎么用?Python LOG_LEVELS使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LOG_LEVELS类的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: make_group_generator
def make_group_generator(random, project):
epoch = to_timestamp(datetime(2016, 6, 1, 0, 0, 0, tzinfo=timezone.utc))
for id in itertools.count(1):
first_seen = epoch + random.randint(0, 60 * 60 * 24 * 30)
last_seen = random.randint(first_seen, first_seen + (60 * 60 * 24 * 30))
culprit = make_culprit(random)
level = random.choice(LOG_LEVELS.keys())
message = make_message(random)
group = Group(
id=id,
project=project,
culprit=culprit,
level=level,
message=message,
first_seen=to_datetime(first_seen),
last_seen=to_datetime(last_seen),
status=random.choice((GroupStatus.UNRESOLVED, GroupStatus.RESOLVED, )),
data={
'type': 'default',
'metadata': {
'title': message,
}
}
)
if random.random() < 0.8:
group.data = make_group_metadata(random, group)
yield group
开发者ID:Kayle009,项目名称:sentry,代码行数:31,代码来源:mail.py
示例2: serialize
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'],
}
开发者ID:280185386,项目名称:sentry,代码行数:60,代码来源:group.py
示例3: serialize
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'),
}
开发者ID:Kayle009,项目名称:sentry,代码行数:10,代码来源:grouptombstone.py
示例4: serialize
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'],
}
开发者ID:ikewang,项目名称:sentry,代码行数:51,代码来源:group.py
示例5: make_group_generator
def make_group_generator(random, project):
epoch = to_timestamp(datetime(2016, 6, 1, 0, 0, 0, tzinfo=timezone.utc))
for id in itertools.count(1):
first_seen = epoch + random.randint(0, 60 * 60 * 24 * 30)
last_seen = random.randint(first_seen, first_seen + (60 * 60 * 24 * 30))
group = Group(
id=id,
project=project,
culprit=make_culprit(random),
level=random.choice(LOG_LEVELS.keys()),
message=make_message(random),
first_seen=to_datetime(first_seen),
last_seen=to_datetime(last_seen),
)
if random.random() < 0.8:
group.data = make_group_metadata(random, group)
yield group
开发者ID:davgit,项目名称:sentry,代码行数:20,代码来源:mail.py
示例6: serialize
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
开发者ID:hyserver,项目名称:sentry,代码行数:41,代码来源:group.py
示例7: normalize
#.........这里部分代码省略.........
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)
if not value:
self.logger.debug('Ignored empty interface value: %s', k)
continue
try:
interface = get_interface(k)
except ValueError:
self.logger.debug('Ignored unknown attribute: %s', k)
errors.append({'type': EventError.INVALID_ATTRIBUTE, 'name': k})
continue
try:
inst = interface.to_python(value)
data[inst.get_path()] = inst.to_json()
except Exception as e:
log = self.logger.debug if isinstance(
e, InterfaceValidationError) else self.logger.error
log('Discarded invalid value for interface: %s (%r)', k, value, exc_info=True)
errors.append({'type': EventError.INVALID_DATA, 'name': k, 'value': value})
# Additional data coercion and defaulting
level = data.get('level') or DEFAULT_LOG_LEVEL
if isinstance(level, int) or (isinstance(level, six.string_types) and level.isdigit()):
level = LOG_LEVELS.get(int(level), DEFAULT_LOG_LEVEL)
data['level'] = LOG_LEVELS_MAP.get(level, LOG_LEVELS_MAP[DEFAULT_LOG_LEVEL])
if data.get('dist') and not data.get('release'):
data['dist'] = None
timestamp = data.get('timestamp')
if not timestamp:
timestamp = timezone.now()
# TODO (alex) can this all be replaced by utcnow?
# it looks like the only time that this would even be hit is when timestamp
# is not defined, as the earlier process_timestamp already converts existing
# timestamps to floats.
if isinstance(timestamp, datetime):
# We must convert date to local time so Django doesn't mess it up
# based on TIME_ZONE
if settings.TIME_ZONE:
if not timezone.is_aware(timestamp):
timestamp = timestamp.replace(tzinfo=timezone.utc)
elif timezone.is_aware(timestamp):
timestamp = timestamp.replace(tzinfo=None)
timestamp = float(timestamp.strftime('%s'))
data['timestamp'] = timestamp
data['received'] = float(timezone.now().strftime('%s'))
data.setdefault('checksum', None)
data.setdefault('culprit', None)
data.setdefault('dist', None)
data.setdefault('environment', None)
data.setdefault('extra', {})
data.setdefault('fingerprint', None)
开发者ID:mjumbewu,项目名称:sentry,代码行数:67,代码来源:event_manager.py
示例8: dict
from sentry.app import cache, env
from sentry.constants import DEFAULT_LOG_LEVEL, LOG_LEVELS, MAX_TAG_VALUE_LENGTH, MAX_TAG_KEY_LENGTH
from sentry.exceptions import InvalidTimestamp
from sentry.interfaces.base import get_interface
from sentry.models import Project, ProjectKey
from sentry.tasks.store import preprocess_event
from sentry.utils import is_float, json
from sentry.utils.auth import parse_auth_header
from sentry.utils.compat import StringIO
from sentry.utils.strings import decompress
logger = logging.getLogger("sentry.coreapi")
LOG_LEVEL_REVERSE_MAP = dict((v, k) for k, v in LOG_LEVELS.iteritems())
RESERVED_FIELDS = (
"project",
"event_id",
"message",
"checksum",
"culprit",
"level",
"time_spent",
"logger",
"server_name",
"site",
"timestamp",
"extra",
"modules",
开发者ID:achun2080,项目名称:sentry,代码行数:30,代码来源:coreapi.py
示例9: OrderedDict
:copyright: (c) 2010-2014 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
"""
from __future__ import absolute_import
from collections import OrderedDict
from django import forms
from sentry.constants import LOG_LEVELS, LOG_LEVELS_MAP
from sentry.rules.conditions.base import EventCondition
LEVEL_CHOICES = OrderedDict(
[("{0}".format(k), v) for k, v in sorted(LOG_LEVELS.items(), key=lambda x: x[0], reverse=True)]
)
class MatchType(object):
EQUAL = "eq"
LESS_OR_EQUAL = "lte"
GREATER_OR_EQUAL = "gte"
MATCH_CHOICES = OrderedDict(
[
(MatchType.EQUAL, "equal to"),
(MatchType.LESS_OR_EQUAL, "less than or equal to"),
(MatchType.GREATER_OR_EQUAL, "greater than or equal to"),
]
开发者ID:ForkRepo,项目名称:sentry,代码行数:30,代码来源:level.py
示例10: serialize
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,
},
#.........这里部分代码省略.........
开发者ID:Kayle009,项目名称:sentry,代码行数:101,代码来源:group.py
示例11: digest
def digest(request):
seed = request.GET.get('seed', str(time.time()))
logger.debug('Using random seed value: %s')
random = Random(seed)
now = datetime.utcnow().replace(tzinfo=pytz.utc)
# TODO: Refactor all of these into something more manageable.
org = Organization(
id=1,
slug='example',
name='Example Organization',
)
team = Team(
id=1,
slug='example',
name='Example Team',
organization=org,
)
project = Project(
id=1,
slug='example',
name='Example Project',
team=team,
organization=org,
)
rules = {i: Rule(
id=i,
project=project,
label="Rule #%s" % (i,),
) for i in xrange(1, random.randint(2, 4))}
state = {
'project': project,
'groups': {},
'rules': rules,
'event_counts': {},
'user_counts': {},
}
records = []
group_sequence = itertools.count(1)
event_sequence = itertools.count(1)
for i in xrange(random.randint(1, 30)):
group_id = next(group_sequence)
culprit = '{module} in {function}'.format(
module='.'.join(
''.join(random.sample(WORDS, random.randint(1, int(random.paretovariate(2.2))))) for word in xrange(1, 4)
),
function=random.choice(WORDS)
)
group = state['groups'][group_id] = Group(
id=group_id,
project=project,
message=words(int(random.weibullvariate(8, 4)), common=False),
culprit=culprit,
level=random.choice(LOG_LEVELS.keys()),
)
offset = timedelta(seconds=0)
for i in xrange(random.randint(1, 10)):
offset += timedelta(seconds=random.random() * 120)
event = Event(
id=next(event_sequence),
event_id=uuid.uuid4().hex,
project=project,
group=group,
message=group.message,
data=load_data('python'),
datetime=now - offset,
)
records.append(
Record(
event.event_id,
Notification(
event,
random.sample(state['rules'], random.randint(1, len(state['rules']))),
),
to_timestamp(event.datetime),
)
)
state['event_counts'][group_id] = random.randint(10, 1e4)
state['user_counts'][group_id] = random.randint(10, 1e4)
digest = build_digest(project, records, state)
start, end, counts = get_digest_metadata(digest)
return MailPreview(
html_template='sentry/emails/digests/body.html',
text_template='sentry/emails/digests/body.txt',
context={
'project': project,
#.........这里部分代码省略.........
开发者ID:280185386,项目名称:sentry,代码行数:101,代码来源:mail.py
示例12: OrderedDict
:copyright: (c) 2010-2014 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
"""
from __future__ import absolute_import
from collections import OrderedDict
from django import forms
from sentry.constants import LOG_LEVELS, LOG_LEVELS_MAP
from sentry.rules.conditions.base import EventCondition
LEVEL_CHOICES = OrderedDict([
("{0}".format(k), "{0}".format(v.capitalize()))
for k, v in sorted(LOG_LEVELS.items(), key=lambda x: x[0], reverse=True)
])
class LevelMatchType(object):
EQUAL = 'eq'
LESS_OR_EQUAL = 'lte'
GREATER_OR_EQUAL = 'gte'
class LevelEventForm(forms.Form):
level = forms.ChoiceField(
choices=LEVEL_CHOICES.items(),
initial=30)
match = forms.ChoiceField(
choices=(
开发者ID:BrunoAsato,项目名称:sentry,代码行数:31,代码来源:level.py
示例13: digest
def digest(request):
seed = request.GET.get('seed', str(time.time()))
logger.debug('Using random seed value: %s')
random = Random(seed)
now = datetime.utcnow().replace(tzinfo=pytz.utc)
# TODO: Refactor all of these into something more manageable.
org = Organization(
id=1,
slug='example',
name='Example Organization',
)
team = Team(
id=1,
slug='example',
name='Example Team',
organization=org,
)
project = Project(
id=1,
slug='example',
name='Example Project',
team=team,
organization=org,
)
rules = {i: Rule(
id=i,
project=project,
label="Rule #%s" % (i,),
) for i in xrange(1, random.randint(2, 4))}
state = {
'project': project,
'groups': {},
'rules': rules,
'event_counts': {},
'user_counts': {},
}
records = []
group_sequence = itertools.count(1)
event_sequence = itertools.count(1)
for i in xrange(random.randint(1, 30)):
group_id = next(group_sequence)
group = state['groups'][group_id] = Group(
id=group_id,
project=project,
message=words(int(random.paretovariate(1.05)), common=False),
culprit=words(int(random.paretovariate(1)), common=False),
level=random.choice(LOG_LEVELS.keys()),
)
offset = timedelta(seconds=0)
for i in xrange(random.randint(1, 10)):
offset += timedelta(seconds=random.random() * 120)
event = Event(
id=next(event_sequence),
event_id=uuid.uuid4().hex,
project=project,
group=group,
message=group.message,
data=load_data('python'),
datetime=now - offset,
)
records.append(
Record(
event.event_id,
Notification(
event,
random.sample(state['rules'], random.randint(1, len(state['rules']))),
),
to_timestamp(event.datetime),
)
)
state['event_counts'][group_id] = random.randint(10, 1e4)
state['user_counts'][group_id] = random.randint(10, 1e4)
digest = build_digest(project, records, state)
# TODO(tkaemming): This duplication from ``MailPlugin.notify_digest`` is a code smell
counts = Counter()
for rule, groups in digest.iteritems():
counts.update(groups.keys())
return MailPreview(
html_template='sentry/emails/digests/body.html',
text_template='sentry/emails/digests/body.txt',
context={
'project': project,
'counts': counts,
'digest': digest,
#.........这里部分代码省略.........
开发者ID:xiaoge56,项目名称:sentry,代码行数:101,代码来源:mail.py
示例14: OrderedDict
:license: BSD, see LICENSE for more details.
"""
from __future__ import absolute_import
from collections import OrderedDict
from django import forms
from sentry.constants import LOG_LEVELS
from sentry.rules.conditions.base import EventCondition
LEVEL_CHOICES = OrderedDict(
[
("{0}".format(k), "{0}".format(v.capitalize()))
for k, v in sorted(LOG_LEVELS.items(), key=lambda x: x[0], reverse=True)
]
)
LOG_LEVEL_REVERSE_MAP = dict((v, k) for k, v in LOG_LEVELS.iteritems())
class LevelMatchType(object):
EQUAL = "eq"
LESS_OR_EQUAL = "lte"
GREATER_OR_EQUAL = "gte"
class LevelEventForm(forms.Form):
level = forms.ChoiceField(choices=LEVEL_CHOICES.items(), initial=30)
match = forms.ChoiceField(
choices=(
开发者ID:pombredanne,项目名称:django-sentry,代码行数:31,代码来源:level.py
示例15:
from sentry.utils import settings
from sentry.plugins import Plugin
from sentry.conf import server
from sentry.utils.http import absolute_uri
from sentry.web.helpers import render_to_string
from sentry.constants import LOG_LEVELS
import sentry_pushover
import requests
message_template = 'sentry_pushover/error.txt'
message_template_alert = 'sentry_pushover/alert.txt'
choices_levels = ((i, level.upper()) for i, level in LOG_LEVELS.iteritems())
choices_sounds = ((
('pushover', 'Pushover (default)'),
('bike', 'Bike'),
('bugle', 'Bugle'),
('cashregister', 'Cash Register'),
('classical', 'Classical'),
('cosmic', 'Cosmic'),
('falling', 'Falling'),
('gamelan', 'Gamelan'),
('incoming', 'Incoming'),
('intermission', 'Intermission'),
('magic', 'Magic'),
('mechanical', 'Mechanical'),
('pianobar', 'Piano Bar'),
('siren', 'Siren'),
开发者ID:p0is0n,项目名称:sentry-pushover,代码行数:30,代码来源:models.py
示例16: serialize
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'],
}
开发者ID:sashahilton00,项目名称:sentry,代码行数:69,代码来源:group.py
注:本文中的sentry.constants.LOG_LEVELS类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论