本文整理汇总了Python中raven.handlers.logging.SentryHandler.emit方法的典型用法代码示例。如果您正苦于以下问题:Python SentryHandler.emit方法的具体用法?Python SentryHandler.emit怎么用?Python SentryHandler.emit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类raven.handlers.logging.SentryHandler
的用法示例。
在下文中一共展示了SentryHandler.emit方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_exception_on_emit
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
def test_exception_on_emit(self, should_try, _send_remote):
should_try.return_value = True
# Test for the default behaviour in which an exception is handled by the client or handler
client = Client(
servers=['sync+http://example.com'],
public_key='public',
secret_key='secret',
project=1,
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
record = self.make_record('This is a test error')
handler.emit(record)
self.assertEquals(handler.client.state.status, handler.client.state.ERROR)
# Test for the case in which a send error is raised to the calling frame.
client = Client(
servers=['sync+http://example.com'],
public_key='public',
secret_key='secret',
project=1,
raise_send_errors=True,
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
with self.assertRaises(Exception):
record = self.make_record('This is a test error')
handler.emit(record)
示例2: test_tags_merge
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
def test_tags_merge(self):
handler = SentryHandler(self.client, tags={'foo': 'bar', 'biz': 'baz'})
record = self.make_record('Message', extra={'tags': {'foo': 'faz'}})
handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
assert event['tags'] == {'foo': 'faz', 'biz': 'baz'}
示例3: server_log_handler
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
def server_log_handler(client):
""" Adds sentry log handler to the logger
:return: the sentry handler
"""
from raven.handlers.logging import SentryHandler
sh = SentryHandler(client=client, level=logging.ERROR)
# Don't send Sentry events for command-line usage errors
old_emit = sh.emit
def emit(self, record):
if record.message.startswith("Command-line usage error:"):
return
return old_emit(record)
sh.emit = lambda x: emit(sh, x)
fmt = ("[%(asctime)s][%(levelname)s] %(filename)s: %(lineno)d | "
"%(message)s")
formatter = logging.Formatter(fmt=fmt, datefmt="%H:%M:%S")
formatter.converter = time.gmtime
sh.setFormatter(formatter)
logger.addHandler(sh)
return sh
示例4: LoggingIntegrationTest
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
class LoggingIntegrationTest(TestCase):
def setUp(self):
self.client = TempStoreClient(include_paths=['tests', 'raven'])
self.handler = SentryHandler(self.client)
def make_record(self, msg, args=(), level=logging.INFO, extra=None, exc_info=None, name='root', pathname=__file__):
record = logging.LogRecord(name, level, pathname, 27, msg, args, exc_info, 'make_record')
if extra:
for key, value in six.iteritems(extra):
record.__dict__[key] = value
return record
def test_logger_basic(self):
record = self.make_record('This is a test error')
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['logger'], 'root')
self.assertEqual(event['level'], logging.INFO)
self.assertEqual(event['message'], 'This is a test error')
self.assertFalse('sentry.interfaces.Stacktrace' in event)
self.assertFalse('sentry.interfaces.Exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEqual(msg['message'], 'This is a test error')
self.assertEqual(msg['params'], ())
def test_can_record(self):
tests = [
("raven", False),
("raven.foo", False),
("sentry.errors", False),
("sentry.errors.foo", False),
("raven_utils", True),
]
for test in tests:
record = self.make_record("Test", name=test[0])
self.assertEqual(self.handler.can_record(record), test[1])
def test_logger_extra_data(self):
record = self.make_record('This is a test error', extra={'data': {
'url': 'http://example.com',
}})
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
if six.PY3:
expected = "'http://example.com'"
else:
expected = "u'http://example.com'"
self.assertEqual(event['extra']['url'], expected)
def test_logger_exc_info(self):
try:
raise ValueError('This is a test ValueError')
except ValueError:
record = self.make_record('This is a test info with an exception', exc_info=sys.exc_info())
else:
self.fail('Should have raised an exception')
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['message'], 'This is a test info with an exception')
self.assertTrue('sentry.interfaces.Stacktrace' in event)
self.assertTrue('sentry.interfaces.Exception' in event)
exc = event['sentry.interfaces.Exception']
self.assertEqual(exc['type'], 'ValueError')
self.assertEqual(exc['value'], 'This is a test ValueError')
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEqual(msg['message'], 'This is a test info with an exception')
self.assertEqual(msg['params'], ())
def test_message_params(self):
record = self.make_record('This is a test of %s', args=('args',))
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['message'], 'This is a test of args')
msg = event['sentry.interfaces.Message']
self.assertEqual(msg['message'], 'This is a test of %s')
expected = ("'args'",) if six.PY3 else ("u'args'",)
self.assertEqual(msg['params'], expected)
def test_record_stack(self):
record = self.make_record('This is a test of stacks', extra={'stack': True})
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertTrue('sentry.interfaces.Stacktrace' in event)
frames = event['sentry.interfaces.Stacktrace']['frames']
self.assertNotEquals(len(frames), 1)
#.........这里部分代码省略.........
示例5: LoggingIntegrationTest
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
class LoggingIntegrationTest(TestCase):
def setUp(self):
self.client = TempStoreClient(include_paths=['tests', 'raven'])
self.handler = SentryHandler(self.client)
def make_record(self, msg, args=(), level=logging.INFO, extra=None, exc_info=None, name='root', pathname=__file__):
record = logging.LogRecord(name, level, pathname, 27, msg, args, exc_info, 'make_record')
if extra:
for key, value in iteritems(extra):
record.__dict__[key] = value
return record
def test_logger_basic(self):
record = self.make_record('This is a test error')
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['logger'], 'root')
self.assertEqual(event['level'], logging.INFO)
self.assertEqual(event['message'], 'This is a test error')
assert 'exception' not in event
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEqual(msg['message'], 'This is a test error')
self.assertEqual(msg['params'], ())
def test_logger_ignore_exception(self):
class Foo(Exception):
pass
old = self.client.ignore_exceptions
self.client.ignore_exceptions = set(['Foo'])
try:
try:
raise Foo()
except Exception:
exc_info = sys.exc_info()
record = self.make_record('This is a test error',
exc_info=exc_info)
self.handler.emit(record)
self.assertEqual(len(self.client.events), 0)
finally:
self.client.ignore_exceptions = old
def test_can_record(self):
tests = [
("raven", False),
("raven.foo", False),
("sentry.errors", False),
("sentry.errors.foo", False),
("raven_utils", True),
]
for test in tests:
record = self.make_record("Test", name=test[0])
self.assertEqual(self.handler.can_record(record), test[1])
@mock.patch('raven.transport.http.HTTPTransport.send')
@mock.patch('raven.base.ClientState.should_try')
def test_exception_on_emit(self, should_try, _send_remote):
should_try.return_value = True
# Test for the default behaviour in which an exception is handled by the client or handler
client = Client(
dsn='sync+http://public:[email protected]/1',
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
record = self.make_record('This is a test error')
handler.emit(record)
self.assertEquals(handler.client.state.status, handler.client.state.ERROR)
# Test for the case in which a send error is raised to the calling frame.
client = Client(
dsn='sync+http://public:[email protected]/1',
raise_send_errors=True,
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
with self.assertRaises(Exception):
record = self.make_record('This is a test error')
handler.emit(record)
def test_logger_extra_data(self):
record = self.make_record('This is a test error', extra={'data': {
'url': 'http://example.com',
}})
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
if not PY2:
expected = "'http://example.com'"
else:
expected = "u'http://example.com'"
self.assertEqual(event['extra']['url'], expected)
def test_extra_data_dict_is_not_mutated(self):
# The code used to modify the dictionary included in extra arguments under the 'data' key.
# This is unexpected behavior, let's make sure it doesn't happen anymore.
data = {'data_key': 'data_value'}
#.........这里部分代码省略.........
示例6: LoggingIntegrationTest
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
class LoggingIntegrationTest(TestCase):
def setUp(self):
self.client = TempStoreClient(include_paths=['tests', 'raven'])
self.handler = SentryHandler(self.client)
def make_record(self, msg, args=(), level=logging.INFO, extra=None, exc_info=None):
record = logging.LogRecord('root', level, __file__, 27, msg, args, exc_info, 'make_record')
if extra:
for key, value in extra.iteritems():
record.__dict__[key] = value
return record
def test_logger_basic(self):
record = self.make_record('This is a test error')
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['logger'], 'root')
self.assertEquals(event['level'], logging.INFO)
self.assertEquals(event['message'], 'This is a test error')
self.assertFalse('sentry.interfaces.Stacktrace' in event)
self.assertFalse('sentry.interfaces.Exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test error')
self.assertEquals(msg['params'], ())
def test_logger_extra_data(self):
record = self.make_record('This is a test error', extra={'data': {
'url': 'http://example.com',
}})
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['extra']['url'], 'http://example.com')
def test_logger_exc_info(self):
try:
raise ValueError('This is a test ValueError')
except ValueError:
record = self.make_record('This is a test info with an exception', exc_info=sys.exc_info())
else:
self.fail('Should have raised an exception')
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'This is a test info with an exception')
self.assertTrue('sentry.interfaces.Stacktrace' in event)
self.assertTrue('sentry.interfaces.Exception' in event)
exc = event['sentry.interfaces.Exception']
self.assertEquals(exc['type'], 'ValueError')
self.assertEquals(exc['value'], 'This is a test ValueError')
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test info with an exception')
self.assertEquals(msg['params'], ())
def test_message_params(self):
record = self.make_record('This is a test of %s', args=('args',))
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'This is a test of args')
msg = event['sentry.interfaces.Message']
self.assertEquals(msg['message'], 'This is a test of %s')
self.assertEquals(msg['params'], ('args',))
def test_record_stack(self):
record = self.make_record('This is a test of stacks', extra={'stack': True})
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertTrue('sentry.interfaces.Stacktrace' in event)
frames = event['sentry.interfaces.Stacktrace']['frames']
self.assertNotEquals(len(frames), 1)
frame = frames[0]
self.assertEquals(frame['module'], 'raven.handlers.logging')
self.assertFalse('sentry.interfaces.Exception' in event)
self.assertTrue('sentry.interfaces.Message' in event)
self.assertEquals(event['culprit'], 'root.make_record')
self.assertEquals(event['message'], 'This is a test of stacks')
def test_no_record_stack(self):
record = self.make_record('This is a test with no stacks', extra={'stack': False})
self.handler.emit(record)
self.assertEquals(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEquals(event['message'], 'This is a test with no stacks')
self.assertFalse('sentry.interfaces.Stacktrace' in event)
def test_explicit_stack(self):
record = self.make_record('This is a test of stacks', extra={'stack': iter_stack_frames()})
#.........这里部分代码省略.........
示例7: LoggingIntegrationTest
# 需要导入模块: from raven.handlers.logging import SentryHandler [as 别名]
# 或者: from raven.handlers.logging.SentryHandler import emit [as 别名]
class LoggingIntegrationTest(TestCase):
def setUp(self):
self.client = TempStoreClient(include_paths=['tests', 'raven'])
self.handler = SentryHandler(self.client)
def make_record(self, msg, args=(), level=logging.INFO, extra=None, exc_info=None, name='root', pathname=__file__):
record = logging.LogRecord(name, level, pathname, 27, msg, args, exc_info, 'make_record')
if extra:
for key, value in six.iteritems(extra):
record.__dict__[key] = value
return record
def test_logger_basic(self):
record = self.make_record('This is a test error')
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['logger'], 'root')
self.assertEqual(event['level'], logging.INFO)
self.assertEqual(event['message'], 'This is a test error')
assert 'exception' not in event
self.assertTrue('sentry.interfaces.Message' in event)
msg = event['sentry.interfaces.Message']
self.assertEqual(msg['message'], 'This is a test error')
self.assertEqual(msg['params'], ())
def test_can_record(self):
tests = [
("raven", False),
("raven.foo", False),
("sentry.errors", False),
("sentry.errors.foo", False),
("raven_utils", True),
]
for test in tests:
record = self.make_record("Test", name=test[0])
self.assertEqual(self.handler.can_record(record), test[1])
@mock.patch('raven.transport.http.HTTPTransport.send')
@mock.patch('raven.base.ClientState.should_try')
def test_exception_on_emit(self, should_try, _send_remote):
should_try.return_value = True
# Test for the default behaviour in which an exception is handled by the client or handler
client = Client(
servers=['sync+http://example.com'],
public_key='public',
secret_key='secret',
project=1,
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
record = self.make_record('This is a test error')
handler.emit(record)
self.assertEquals(handler.client.state.status, handler.client.state.ERROR)
# Test for the case in which a send error is raised to the calling frame.
client = Client(
servers=['sync+http://example.com'],
public_key='public',
secret_key='secret',
project=1,
raise_send_errors=True,
)
handler = SentryHandler(client)
_send_remote.side_effect = Exception()
with self.assertRaises(Exception):
record = self.make_record('This is a test error')
handler.emit(record)
def test_logger_extra_data(self):
record = self.make_record('This is a test error', extra={'data': {
'url': 'http://example.com',
}})
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
if six.PY3:
expected = "'http://example.com'"
else:
expected = "u'http://example.com'"
self.assertEqual(event['extra']['url'], expected)
def test_logger_exc_info(self):
try:
raise ValueError('This is a test ValueError')
except ValueError:
record = self.make_record('This is a test info with an exception', exc_info=sys.exc_info())
else:
self.fail('Should have raised an exception')
self.handler.emit(record)
self.assertEqual(len(self.client.events), 1)
event = self.client.events.pop(0)
self.assertEqual(event['message'], 'This is a test info with an exception')
assert 'exception' in event
#.........这里部分代码省略.........