diff --git a/compose/cli/log_printer.py b/compose/cli/log_printer.py index c49b817de..e56dc2fa3 100644 --- a/compose/cli/log_printer.py +++ b/compose/cli/log_printer.py @@ -158,10 +158,8 @@ class QueueItem(namedtuple('_QueueItem', 'item is_stop exc')): def tail_container_logs(container, presenter, queue, log_args): - generator = get_log_generator(container) - try: - for item in generator(container, log_args): + for item in build_log_generator(container, log_args): queue.put(QueueItem.new(presenter.present(container, item))) except Exception as e: queue.put(QueueItem.exception(e)) @@ -171,20 +169,6 @@ def tail_container_logs(container, presenter, queue, log_args): queue.put(QueueItem.stop(container.name)) -def get_log_generator(container): - if container.has_api_logs: - return build_log_generator - return build_no_log_generator - - -def build_no_log_generator(container, log_args): - """Return a generator that prints a warning about logs and waits for - container to exit. - """ - yield "WARNING: no logs are available with the '{}' log driver\n".format( - container.log_driver) - - def build_log_generator(container, log_args): # if the container doesn't have a log_stream we need to attach to container # before log printer starts running diff --git a/compose/container.py b/compose/container.py index 00626b619..c1c85d143 100644 --- a/compose/container.py +++ b/compose/container.py @@ -186,11 +186,6 @@ class Container: def log_driver(self): return self.get('HostConfig.LogConfig.Type') - @property - def has_api_logs(self): - log_type = self.log_driver - return not log_type or log_type in ('json-file', 'journald', 'local') - @property def human_readable_health_status(self): """ Generate UP status string with up time and health @@ -204,11 +199,7 @@ class Container: return status_string def attach_log_stream(self): - """A log stream can only be attached if the container uses a - json-file, journald or local log driver. - """ - if self.has_api_logs: - self.log_stream = self.attach(stdout=True, stderr=True, stream=True) + self.log_stream = self.attach(stdout=True, stderr=True, stream=True) def get(self, key): """Return a value from the container or None if the value is not set. diff --git a/tests/unit/cli/log_printer_test.py b/tests/unit/cli/log_printer_test.py index aeeed31f3..f76e2d626 100644 --- a/tests/unit/cli/log_printer_test.py +++ b/tests/unit/cli/log_printer_test.py @@ -8,7 +8,6 @@ from docker.errors import APIError from compose.cli.log_printer import build_log_generator from compose.cli.log_printer import build_log_presenters -from compose.cli.log_printer import build_no_log_generator from compose.cli.log_printer import consume_queue from compose.cli.log_printer import QueueItem from compose.cli.log_printer import wait_on_exit @@ -75,14 +74,6 @@ def test_wait_on_exit_raises(): assert expected in wait_on_exit(mock_container) -def test_build_no_log_generator(mock_container): - mock_container.has_api_logs = False - mock_container.log_driver = 'none' - output, = build_no_log_generator(mock_container, None) - assert "WARNING: no logs are available with the 'none' log driver\n" in output - assert "exited with code" not in output - - class TestBuildLogGenerator: def test_no_log_stream(self, mock_container): diff --git a/tests/unit/container_test.py b/tests/unit/container_test.py index 452475209..fe1e10787 100644 --- a/tests/unit/container_test.py +++ b/tests/unit/container_test.py @@ -221,34 +221,6 @@ class ContainerTest(unittest.TestCase): container = Container(None, self.container_dict, has_been_inspected=True) assert container.short_id == self.container_id[:12] - def test_has_api_logs(self): - container_dict = { - 'HostConfig': { - 'LogConfig': { - 'Type': 'json-file' - } - } - } - - container = Container(None, container_dict, has_been_inspected=True) - assert container.has_api_logs is True - - container_dict['HostConfig']['LogConfig']['Type'] = 'none' - container = Container(None, container_dict, has_been_inspected=True) - assert container.has_api_logs is False - - container_dict['HostConfig']['LogConfig']['Type'] = 'syslog' - container = Container(None, container_dict, has_been_inspected=True) - assert container.has_api_logs is False - - container_dict['HostConfig']['LogConfig']['Type'] = 'journald' - container = Container(None, container_dict, has_been_inspected=True) - assert container.has_api_logs is True - - container_dict['HostConfig']['LogConfig']['Type'] = 'foobar' - container = Container(None, container_dict, has_been_inspected=True) - assert container.has_api_logs is False - class GetContainerNameTestCase(unittest.TestCase):