本文整理汇总了Python中sentry.constants.LOG_LEVELS类的典型用法代码示例。如果您正苦于以下问题:Python LOG_LEVELS类的具体用法?Python LOG_LEVELS怎么用?Python LOG_LEVELS使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LOG_LEVELS类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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
示例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'],
}
示例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'),
}
示例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'],
}
示例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
示例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
示例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)
示例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",
示例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"),
]
示例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,
},
#.........这里部分代码省略.........
示例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,
#.........这里部分代码省略.........
示例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=(
示例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,
#.........这里部分代码省略.........
示例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=(
示例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'),