diff options
-rw-r--r-- | oslo_log/_i18n.py | 4 | ||||
-rw-r--r-- | oslo_log/_options.py | 2 | ||||
-rw-r--r-- | oslo_log/formatters.py | 24 | ||||
-rw-r--r-- | oslo_log/log.py | 10 | ||||
-rw-r--r-- | oslo_log/tests/unit/test_log.py | 38 | ||||
-rw-r--r-- | requirements.txt | 6 |
6 files changed, 65 insertions, 19 deletions
diff --git a/oslo_log/_i18n.py b/oslo_log/_i18n.py index ebd6c45..5813115 100644 --- a/oslo_log/_i18n.py +++ b/oslo_log/_i18n.py @@ -18,10 +18,10 @@ See http://docs.openstack.org/developer/oslo.i18n/usage.html . """ -from oslo import i18n +import oslo_i18n -_translators = i18n.TranslatorFactory(domain='oslo.log') +_translators = oslo_i18n.TranslatorFactory(domain='oslo.log') # The primary translation function using the well-known name "_" _ = _translators.primary diff --git a/oslo_log/_options.py b/oslo_log/_options.py index ef6f256..9798f86 100644 --- a/oslo_log/_options.py +++ b/oslo_log/_options.py @@ -12,7 +12,7 @@ import copy -from oslo.config import cfg +from oslo_config import cfg _DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" diff --git a/oslo_log/formatters.py b/oslo_log/formatters.py index 11dea3b..47ff005 100644 --- a/oslo_log/formatters.py +++ b/oslo_log/formatters.py @@ -20,8 +20,8 @@ import traceback import six from six import moves -from oslo.serialization import jsonutils from oslo_context import context as context_utils +from oslo_serialization import jsonutils def _dictify_context(context): @@ -169,9 +169,23 @@ class ContextFormatter(logging.Formatter): record.project = self.project record.version = self.version + # FIXME(dims): We need a better way to pick up the instance + # or instance_uuid parameters from the kwargs from say + # LOG.info or LOG.warn + instance_extra = '' + instance = getattr(record, 'instance', None) + instance_uuid = getattr(record, 'instance_uuid', None) context = _update_record_with_context(record) - - if context: + if instance: + try: + instance_extra = (self.conf.instance_format + % instance) + except TypeError: + instance_extra = instance + elif instance_uuid: + instance_extra = (self.conf.instance_uuid_format + % {'uuid': instance_uuid}) + elif context: # FIXME(dhellmann): We should replace these nova-isms with # more generic handling in the Context class. See the # app-agnostic-logging-parameters blueprint. @@ -182,7 +196,6 @@ class ContextFormatter(logging.Formatter): # RequestContext resource_uuid = getattr(context, 'resource_uuid', None) - instance_extra = '' if instance: instance_extra = (self.conf.instance_format % {'uuid': instance}) @@ -192,7 +205,8 @@ class ContextFormatter(logging.Formatter): elif resource_uuid: instance_extra = (self.conf.instance_uuid_format % {'uuid': resource_uuid}) - record.instance = instance_extra + + record.instance = instance_extra # NOTE(sdague): default the fancier formatting params # to an empty string so we don't throw an exception if diff --git a/oslo_log/log.py b/oslo_log/log.py index 1f08b88..bb0c330 100644 --- a/oslo_log/log.py +++ b/oslo_log/log.py @@ -35,8 +35,8 @@ import socket import sys import traceback -from oslo.config import cfg -from oslo.utils import importutils +from oslo_config import cfg +from oslo_utils import importutils import six from six import moves @@ -285,9 +285,11 @@ def _setup_logging_from_conf(conf, project, version): # TODO(bogdando) use the format provided by RFCSysLogHandler # after existing syslog format deprecation in J if conf.use_syslog_rfc_format: - syslog = handlers.RFCSysLogHandler(facility=facility) + syslog = handlers.RFCSysLogHandler(address='/dev/log', + facility=facility) else: - syslog = logging.handlers.SysLogHandler(facility=facility) + syslog = logging.handlers.SysLogHandler(address='/dev/log', + facility=facility) log_root.addHandler(syslog) except socket.error: log_root.error('Unable to add syslog handler. Verify that syslog ' diff --git a/oslo_log/tests/unit/test_log.py b/oslo_log/tests/unit/test_log.py index 01dc10b..4a801b0 100644 --- a/oslo_log/tests/unit/test_log.py +++ b/oslo_log/tests/unit/test_log.py @@ -20,12 +20,12 @@ import sys import tempfile import mock -from oslo.config import cfg -from oslo.config import fixture as fixture_config # noqa -from oslo.i18n import fixture as fixture_trans -from oslo.serialization import jsonutils +from oslo_config import cfg +from oslo_config import fixture as fixture_config # noqa from oslo_context import context from oslo_context import fixture as fixture_context +from oslo_i18n import fixture as fixture_trans +from oslo_serialization import jsonutils from oslotest import base as test_base import six @@ -486,6 +486,36 @@ class FancyRecordTestCase(LogTestBase): self.assertEqual(infoexpected, self.stream.getvalue()) +class InstanceRecordTestCase(LogTestBase): + def setUp(self): + super(InstanceRecordTestCase, self).setUp() + self.config(logging_context_format_string="[%(request_id)s]: " + "%(instance)s" + "%(resource)s" + "%(message)s", + logging_default_format_string="%(instance)s" + "%(resource)s" + "%(message)s") + self.log = log.getLogger() + self._add_handler_with_cleanup(self.log) + self._set_log_level_with_cleanup(self.log, logging.DEBUG) + + def test_instance_dict_in_context_log_msg(self): + ctxt = _fake_context() + fake_resource = {'uuid': 'C9B7CCC6-8A12-4C53-A736-D7A1C36A62F3'} + self.log.info("info", context=ctxt, instance=fake_resource) + infoexpected = "[%s]: [instance: C9B7CCC6-8A12-4C53-A736-" \ + "D7A1C36A62F3] info\n" % ctxt.request_id + self.assertEqual(infoexpected, self.stream.getvalue()) + + def test_instance_dict_in_default_log_msg(self): + fake_resource = {'uuid': 'C9B7CCC6-8A12-4C53-A736-D7A1C36A62F3'} + self.log.info("info", instance=fake_resource) + infoexpected = "[instance: C9B7CCC6-8A12-4C53-A736-" \ + "D7A1C36A62F3] info\n" + self.assertEqual(infoexpected, self.stream.getvalue()) + + class DomainTestCase(LogTestBase): def setUp(self): super(DomainTestCase, self).setUp() diff --git a/requirements.txt b/requirements.txt index c978f08..54ada9b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,10 +4,10 @@ pbr>=0.6,!=0.7,<1.0 Babel>=1.3 -six>=1.7.0 +six>=1.9.0 iso8601>=0.1.9 -oslo.config>=1.6.0 # Apache-2.0 -oslo.context>=0.1.0 # Apache-2.0 +oslo.config>=1.9.0 # Apache-2.0 +oslo.context>=0.2.0 # Apache-2.0 oslo.i18n>=1.3.0 # Apache-2.0 oslo.utils>=1.2.0 # Apache-2.0 oslo.serialization>=1.2.0 # Apache-2.0 |