diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-05-03 08:02:29 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-05-03 08:02:29 +0000 |
| commit | 22683dfd7070899acf9c92f7bb4fac17124ba418 (patch) | |
| tree | eb488db8a0fb61e4e1beace2e1f0b0e43fb23b5e | |
| parent | 6c54bd6c0f62ed6b188bcba106463ee509d0643d (diff) | |
| parent | 060c0967dbd539fe2a218c22a5b385294e13959f (diff) | |
| download | oslo-22683dfd7070899acf9c92f7bb4fac17124ba418.tar.gz oslo-22683dfd7070899acf9c92f7bb4fac17124ba418.tar.xz oslo-22683dfd7070899acf9c92f7bb4fac17124ba418.zip | |
Merge "Deprecate log_format and change default to None"
| -rw-r--r-- | openstack/common/log.py | 17 | ||||
| -rw-r--r-- | tests/unit/test_log.py | 31 |
2 files changed, 34 insertions, 14 deletions
diff --git a/openstack/common/log.py b/openstack/common/log.py index 1599dbf..d7ba467 100644 --- a/openstack/common/log.py +++ b/openstack/common/log.py @@ -48,7 +48,6 @@ from openstack.common import local from openstack.common import notifier -_DEFAULT_LOG_FORMAT = "%(asctime)s %(levelname)8s [%(name)s] %(message)s" _DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" common_cli_opts = [ @@ -73,11 +72,13 @@ logging_cli_opts = [ 'documentation for details on logging configuration ' 'files.'), cfg.StrOpt('log-format', - default=_DEFAULT_LOG_FORMAT, + default=None, metavar='FORMAT', help='A logging.Formatter log message format string which may ' 'use any of the available logging.LogRecord attributes. ' - 'Default: %(default)s'), + 'This option is deprecated. Please use ' + 'logging_context_format_string and ' + 'logging_default_format_string instead.'), cfg.StrOpt('log-date-format', default=_DEFAULT_LOG_DATE_FORMAT, metavar='DATE_FORMAT', @@ -429,13 +430,17 @@ def _setup_logging_from_conf(): if CONF.publish_errors: log_root.addHandler(PublishErrorsHandler(logging.ERROR)) + datefmt = CONF.log_date_format for handler in log_root.handlers: - datefmt = CONF.log_date_format + # NOTE(alaski): CONF.log_format overrides everything currently. This + # should be deprecated in favor of context aware formatting. if CONF.log_format: handler.setFormatter(logging.Formatter(fmt=CONF.log_format, datefmt=datefmt)) + log_root.info('Deprecated: log_format is now deprecated and will ' + 'be removed in the next release') else: - handler.setFormatter(LegacyFormatter(datefmt=datefmt)) + handler.setFormatter(ContextFormatter(datefmt=datefmt)) if CONF.debug: log_root.setLevel(logging.DEBUG) @@ -481,7 +486,7 @@ class WritableLogger(object): self.logger.log(self.level, msg) -class LegacyFormatter(logging.Formatter): +class ContextFormatter(logging.Formatter): """A context.RequestContext aware formatter configured through flags. The flags used to set format strings are: logging_context_format_string diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py index a80b872..c73f67a 100644 --- a/tests/unit/test_log.py +++ b/tests/unit/test_log.py @@ -35,11 +35,11 @@ class CommonLoggerTestsMixIn(object): '%(message)s') self.log = None - def test_handlers_have_legacy_formatter(self): + def test_handlers_have_context_formatter(self): formatters = [] for h in self.log.logger.handlers: f = h.formatter - if isinstance(f, log.LegacyFormatter): + if isinstance(f, log.ContextFormatter): formatters.append(f) self.assert_(formatters) self.assertEqual(len(formatters), len(self.log.logger.handlers)) @@ -203,9 +203,9 @@ class JSONFormatterTestCase(test_utils.BaseTestCase): self.assertTrue(data['traceback']) -class LegacyFormatterTestCase(test_utils.BaseTestCase): +class ContextFormatterTestCase(test_utils.BaseTestCase): def setUp(self): - super(LegacyFormatterTestCase, self).setUp() + super(ContextFormatterTestCase, self).setUp() self.config(logging_context_format_string="HAS CONTEXT " "[%(request_id)s]: " "%(message)s", @@ -214,7 +214,7 @@ class LegacyFormatterTestCase(test_utils.BaseTestCase): self.log = log.getLogger() self.stream = cStringIO.StringIO() self.handler = logging.StreamHandler(self.stream) - self.handler.setFormatter(log.LegacyFormatter()) + self.handler.setFormatter(log.ContextFormatter()) self.log.logger.addHandler(self.handler) self.addCleanup(self.log.logger.removeHandler, self.handler) self.level = self.log.logger.getEffectiveLevel() @@ -245,7 +245,7 @@ class ExceptionLoggingTestCase(test_utils.BaseTestCase): stream = cStringIO.StringIO() handler = logging.StreamHandler(stream) - handler.setFormatter(log.LegacyFormatter()) + handler.setFormatter(log.ContextFormatter()) exc_log.logger.addHandler(handler) self.addCleanup(exc_log.logger.removeHandler, handler) excepthook = log._create_logging_excepthook(product_name) @@ -280,7 +280,7 @@ class FancyRecordTestCase(test_utils.BaseTestCase): self.stream = cStringIO.StringIO() self.colorhandler = log.ColorHandler(self.stream) - self.colorhandler.setFormatter(log.LegacyFormatter()) + self.colorhandler.setFormatter(log.ContextFormatter()) self.colorlog = log.getLogger() self.colorlog.logger.addHandler(self.colorhandler) @@ -369,8 +369,8 @@ class LogConfigOptsTestCase(test_utils.BaseTestCase): self.assertTrue(CONF.log_config is None) self.assertTrue(CONF.log_file is None) self.assertTrue(CONF.log_dir is None) + self.assertTrue(CONF.log_format is None) - self.assertEquals(CONF.log_format, log._DEFAULT_LOG_FORMAT) self.assertEquals(CONF.log_date_format, log._DEFAULT_LOG_DATE_FORMAT) self.assertEquals(CONF.use_syslog, False) @@ -395,6 +395,21 @@ class LogConfigOptsTestCase(test_utils.BaseTestCase): CONF(['--logdir', logdir]) self.assertEquals(CONF.log_dir, logdir) + def test_log_format_overrides_formatter(self): + CONF(['--log-format', '[Any format]']) + log._setup_logging_from_conf() + logger = log._loggers[None].logger + for handler in logger.handlers: + formatter = handler.formatter + self.assertTrue(isinstance(formatter, logging.Formatter)) + + def test_default_formatter(self): + log._setup_logging_from_conf() + logger = log._loggers[None].logger + for handler in logger.handlers: + formatter = handler.formatter + self.assertTrue(isinstance(formatter, log.ContextFormatter)) + class LogConfigTestCase(test_utils.BaseTestCase): |
