Skip to content
Snippets Groups Projects
Commit a582c138 authored by Anton Joubert's avatar Anton Joubert
Browse files

SAR-55 Fix date format in get_default_formatter

The `datefmt` string was not being set correctly resulting in the
incorrect output:
```
1|2020-01-13 10:42:42,415.415Z|...
```
instead of:
```
1|2020-01-13T10:42:42.415Z|...
```

Tests now ensure that the output from the default configuration
matches the output from the standalone formatters.
parent e6a835fd
Branches
Tags
No related merge requests found
...@@ -38,6 +38,7 @@ _FORMAT_STR_WITH_TAGS = ( ...@@ -38,6 +38,7 @@ _FORMAT_STR_WITH_TAGS = (
"%(message)s" "%(message)s"
) )
_FORMAT_STR_DATE = "%Y-%m-%dT%H:%M:%S"
_LOGGING_CONFIG = { _LOGGING_CONFIG = {
"version": 1, "version": 1,
...@@ -46,7 +47,7 @@ _LOGGING_CONFIG = { ...@@ -46,7 +47,7 @@ _LOGGING_CONFIG = {
"default": { "default": {
"()": _UTCFormatter, "()": _UTCFormatter,
"format": _FORMAT_STR_NO_TAGS, "format": _FORMAT_STR_NO_TAGS,
"datefmt": "%Y-%m-%dT%H:%M:%S", "datefmt": _FORMAT_STR_DATE,
} }
}, },
"handlers": { "handlers": {
...@@ -94,7 +95,7 @@ def configure_logging(level=None, tags_filter=None, overrides=None): ...@@ -94,7 +95,7 @@ def configure_logging(level=None, tags_filter=None, overrides=None):
""" """
config = copy.deepcopy(_LOGGING_CONFIG) config = copy.deepcopy(_LOGGING_CONFIG)
if overrides: if overrides:
config = _override(config, overrides) config = _override(config, copy.deepcopy(overrides))
if level: if level:
config["root"]["level"] = level config["root"]["level"] = level
if tags_filter: if tags_filter:
...@@ -128,7 +129,7 @@ def get_default_formatter(tags=False): ...@@ -128,7 +129,7 @@ def get_default_formatter(tags=False):
format_str = _FORMAT_STR_WITH_TAGS format_str = _FORMAT_STR_WITH_TAGS
else: else:
format_str = _FORMAT_STR_NO_TAGS format_str = _FORMAT_STR_NO_TAGS
return _UTCFormatter(fmt=format_str) return _UTCFormatter(fmt=format_str, datefmt=_FORMAT_STR_DATE)
def _override(config, overrides): def _override(config, overrides):
......
...@@ -67,18 +67,15 @@ RECORDER_OVERRIDES = { ...@@ -67,18 +67,15 @@ RECORDER_OVERRIDES = {
} }
@pytest.mark.usefixtures("reset_logging")
class TestConfigureLogging:
"""Tests for :func:`~ska_logging.configuration.configure_logging`."""
@pytest.fixture @pytest.fixture
def default_logger(self): def default_logger():
"""Return user logger instance with default configuration.""" """Return user logger instance with default configuration."""
configure_logging() configure_logging()
yield logging.getLogger("ska.test.app") yield logging.getLogger("ska.test.app")
@pytest.fixture @pytest.fixture
def recording_logger(self): def recording_logger():
"""Return user logger, including a recording handler. """Return user logger, including a recording handler.
The additional handler has the name "recorder". It uses the default formatter, The additional handler has the name "recorder". It uses the default formatter,
...@@ -91,8 +88,9 @@ class TestConfigureLogging: ...@@ -91,8 +88,9 @@ class TestConfigureLogging:
configure_logging(overrides=RECORDER_OVERRIDES) configure_logging(overrides=RECORDER_OVERRIDES)
yield logging.getLogger("ska.logger") yield logging.getLogger("ska.logger")
@pytest.fixture @pytest.fixture
def recording_tags_logger(self): def recording_tags_logger():
"""Return user logger like :func:`recording_logger`, but including tags filter.""" """Return user logger like :func:`recording_logger`, but including tags filter."""
class MyFilter(logging.Filter): class MyFilter(logging.Filter):
...@@ -103,6 +101,11 @@ class TestConfigureLogging: ...@@ -103,6 +101,11 @@ class TestConfigureLogging:
configure_logging(tags_filter=MyFilter, overrides=RECORDER_OVERRIDES) configure_logging(tags_filter=MyFilter, overrides=RECORDER_OVERRIDES)
yield logging.getLogger("ska.logger") yield logging.getLogger("ska.logger")
@pytest.mark.usefixtures("reset_logging")
class TestConfigureLogging:
"""Tests for :func:`~ska_logging.configuration.configure_logging`."""
def test_includes_console_handler(self, default_logger): def test_includes_console_handler(self, default_logger):
assert get_named_handler(default_logger, "console") assert get_named_handler(default_logger, "console")
...@@ -165,23 +168,34 @@ class TestConfigureLogging: ...@@ -165,23 +168,34 @@ class TestConfigureLogging:
assert get_named_handler(logger, "test") assert get_named_handler(logger, "test")
@pytest.mark.usefixtures("reset_logging")
class TestGetDefaultFormatter: class TestGetDefaultFormatter:
"""Tests for :func:`~ska_logging.configuration.get_default_formatter`.""" """Tests for :func:`~ska_logging.configuration.get_default_formatter`."""
def test_default_no_tags(self): def get_recorded_message(self, logger):
logger.info("test message")
recorder = get_named_handler(logger, "recorder")
record = recorder.records[0]
message = recorder.logs[0]
return record, message
def test_default_no_tags(self, recording_logger):
formatter = get_default_formatter() formatter = get_default_formatter()
assert isinstance(formatter, ska_logging.configuration._UTCFormatter) record, message = self.get_recorded_message(recording_logger)
assert formatter._fmt == ska_logging.configuration._FORMAT_STR_NO_TAGS actual_log_message = formatter.format(record)
assert actual_log_message == message
def test_get_tags_disabled(self): def test_get_tags_disabled(self, recording_logger):
formatter = get_default_formatter(tags=False) formatter = get_default_formatter(tags=False)
assert isinstance(formatter, ska_logging.configuration._UTCFormatter) record, message = self.get_recorded_message(recording_logger)
assert formatter._fmt == ska_logging.configuration._FORMAT_STR_NO_TAGS actual_log_message = formatter.format(record)
assert actual_log_message == message
def test_get_tags_enabled(self): def test_get_tags_enabled(self, recording_tags_logger):
formatter = get_default_formatter(tags=True) formatter = get_default_formatter(tags=True)
assert isinstance(formatter, ska_logging.configuration._UTCFormatter) record, message = self.get_recorded_message(recording_tags_logger)
assert formatter._fmt == ska_logging.configuration._FORMAT_STR_WITH_TAGS actual_log_message = formatter.format(record)
assert actual_log_message == message
class TestOverride: class TestOverride:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment