diff --git a/openstack/common/log_handler.py b/openstack/common/log_handler.py index 244a91b5e..b2a919325 100644 --- a/openstack/common/log_handler.py +++ b/openstack/common/log_handler.py @@ -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())) diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py index cad6aae33..57f9887b1 100644 --- a/tests/unit/test_log.py +++ b/tests/unit/test_log.py @@ -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):