Emit message which merged user-supplied argument in log_handler
When using PublishErrorsHandler, it will missing user-supplied arguments. For example, do LOG.info("blabla %s", "foo"), the payload only contains "blabla %s", but we expect it like "blabla foo". This patch fix it. Change-Id: I91289cc4a60f5dab89bca852e6f52b4b83831e47 Closes-bug: #1278291
This commit is contained in:
parent
a53c4dc1db
commit
1f1d3cd323
@ -27,4 +27,4 @@ class PublishErrorsHandler(logging.Handler):
|
||||
notifier.api.notify(None, 'error.publisher',
|
||||
'error_notification',
|
||||
notifier.api.ERROR,
|
||||
dict(error=record.msg))
|
||||
dict(error=record.getMessage()))
|
||||
|
@ -203,6 +203,24 @@ class PublishErrorsHandlerTestCase(test.BaseTestCase):
|
||||
self.publiserrorshandler.emit(logrecord)
|
||||
self.assertTrue(self.stub_flg)
|
||||
|
||||
def test_emit_with_args(self):
|
||||
"""Make sure emit the message which merged user-supplied arguments."""
|
||||
self.config(notification_driver=[
|
||||
'openstack.common.notifier.rabbit_notifier'
|
||||
])
|
||||
self.emit_payload = None
|
||||
expect_payload = dict(error="msg with args: show me")
|
||||
|
||||
def fake_notifier(_context, _publisher_id, _event_type, _priority,
|
||||
payload):
|
||||
self.emit_payload = payload
|
||||
|
||||
self.stubs.Set(notifier, 'notify', fake_notifier)
|
||||
logrecord = logging.LogRecord('name', 'WARN', '/tmp', 1,
|
||||
'msg with args: %s', 'show me', None)
|
||||
self.publiserrorshandler.emit(logrecord)
|
||||
self.assertEqual(self.emit_payload, expect_payload)
|
||||
|
||||
|
||||
class LogLevelTestCase(test.BaseTestCase):
|
||||
def setUp(self):
|
||||
|
Loading…
Reference in New Issue
Block a user