mirror of
https://github.com/docker/compose.git
synced 2025-07-23 05:34:36 +02:00
Merge pull request #7435 from rohitkg98/7416-add-disable-log-prefix-flag
Added option to disable log prefix via cli
This commit is contained in:
commit
f965401569
@ -16,18 +16,22 @@ from compose.utils import split_buffer
|
|||||||
|
|
||||||
class LogPresenter:
|
class LogPresenter:
|
||||||
|
|
||||||
def __init__(self, prefix_width, color_func):
|
def __init__(self, prefix_width, color_func, keep_prefix=True):
|
||||||
self.prefix_width = prefix_width
|
self.prefix_width = prefix_width
|
||||||
self.color_func = color_func
|
self.color_func = color_func
|
||||||
|
self.keep_prefix = keep_prefix
|
||||||
|
|
||||||
def present(self, container, line):
|
def present(self, container, line):
|
||||||
|
to_log = '{line}'.format(line=line)
|
||||||
|
|
||||||
|
if self.keep_prefix:
|
||||||
prefix = container.name_without_project.ljust(self.prefix_width)
|
prefix = container.name_without_project.ljust(self.prefix_width)
|
||||||
return '{prefix} {line}'.format(
|
to_log = '{prefix} '.format(prefix=self.color_func(prefix + ' |')) + to_log
|
||||||
prefix=self.color_func(prefix + ' |'),
|
|
||||||
line=line)
|
return to_log
|
||||||
|
|
||||||
|
|
||||||
def build_log_presenters(service_names, monochrome):
|
def build_log_presenters(service_names, monochrome, keep_prefix=True):
|
||||||
"""Return an iterable of functions.
|
"""Return an iterable of functions.
|
||||||
|
|
||||||
Each function can be used to format the logs output of a container.
|
Each function can be used to format the logs output of a container.
|
||||||
@ -38,7 +42,7 @@ def build_log_presenters(service_names, monochrome):
|
|||||||
return text
|
return text
|
||||||
|
|
||||||
for color_func in cycle([no_color] if monochrome else colors.rainbow()):
|
for color_func in cycle([no_color] if monochrome else colors.rainbow()):
|
||||||
yield LogPresenter(prefix_width, color_func)
|
yield LogPresenter(prefix_width, color_func, keep_prefix)
|
||||||
|
|
||||||
|
|
||||||
def max_name_width(service_names, max_index_width=3):
|
def max_name_width(service_names, max_index_width=3):
|
||||||
|
@ -615,6 +615,7 @@ class TopLevelCommand:
|
|||||||
-t, --timestamps Show timestamps.
|
-t, --timestamps Show timestamps.
|
||||||
--tail="all" Number of lines to show from the end of the logs
|
--tail="all" Number of lines to show from the end of the logs
|
||||||
for each container.
|
for each container.
|
||||||
|
--no-log-prefix Don't print prefix in logs.
|
||||||
"""
|
"""
|
||||||
containers = self.project.containers(service_names=options['SERVICE'], stopped=True)
|
containers = self.project.containers(service_names=options['SERVICE'], stopped=True)
|
||||||
|
|
||||||
@ -635,7 +636,8 @@ class TopLevelCommand:
|
|||||||
containers,
|
containers,
|
||||||
set_no_color_if_clicolor(options['--no-color']),
|
set_no_color_if_clicolor(options['--no-color']),
|
||||||
log_args,
|
log_args,
|
||||||
event_stream=self.project.events(service_names=options['SERVICE'])).run()
|
event_stream=self.project.events(service_names=options['SERVICE']),
|
||||||
|
keep_prefix=not options['--no-log-prefix']).run()
|
||||||
|
|
||||||
def pause(self, options):
|
def pause(self, options):
|
||||||
"""
|
"""
|
||||||
@ -1017,6 +1019,7 @@ class TopLevelCommand:
|
|||||||
container. Implies --abort-on-container-exit.
|
container. Implies --abort-on-container-exit.
|
||||||
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the
|
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the
|
||||||
`scale` setting in the Compose file if present.
|
`scale` setting in the Compose file if present.
|
||||||
|
--no-log-prefix Don't print prefix in logs.
|
||||||
"""
|
"""
|
||||||
start_deps = not options['--no-deps']
|
start_deps = not options['--no-deps']
|
||||||
always_recreate_deps = options['--always-recreate-deps']
|
always_recreate_deps = options['--always-recreate-deps']
|
||||||
@ -1028,6 +1031,7 @@ class TopLevelCommand:
|
|||||||
detached = options.get('--detach')
|
detached = options.get('--detach')
|
||||||
no_start = options.get('--no-start')
|
no_start = options.get('--no-start')
|
||||||
attach_dependencies = options.get('--attach-dependencies')
|
attach_dependencies = options.get('--attach-dependencies')
|
||||||
|
keep_prefix = not options['--no-log-prefix']
|
||||||
|
|
||||||
if detached and (cascade_stop or exit_value_from or attach_dependencies):
|
if detached and (cascade_stop or exit_value_from or attach_dependencies):
|
||||||
raise UserError(
|
raise UserError(
|
||||||
@ -1094,7 +1098,8 @@ class TopLevelCommand:
|
|||||||
set_no_color_if_clicolor(options['--no-color']),
|
set_no_color_if_clicolor(options['--no-color']),
|
||||||
{'follow': True},
|
{'follow': True},
|
||||||
cascade_stop,
|
cascade_stop,
|
||||||
event_stream=self.project.events(service_names=service_names))
|
event_stream=self.project.events(service_names=service_names),
|
||||||
|
keep_prefix=keep_prefix)
|
||||||
print("Attaching to", list_containers(log_printer.containers))
|
print("Attaching to", list_containers(log_printer.containers))
|
||||||
cascade_starter = log_printer.run()
|
cascade_starter = log_printer.run()
|
||||||
|
|
||||||
@ -1382,10 +1387,11 @@ def log_printer_from_project(
|
|||||||
log_args,
|
log_args,
|
||||||
cascade_stop=False,
|
cascade_stop=False,
|
||||||
event_stream=None,
|
event_stream=None,
|
||||||
|
keep_prefix=True,
|
||||||
):
|
):
|
||||||
return LogPrinter(
|
return LogPrinter(
|
||||||
containers,
|
containers,
|
||||||
build_log_presenters(project.service_names, monochrome),
|
build_log_presenters(project.service_names, monochrome, keep_prefix),
|
||||||
event_stream or project.events(),
|
event_stream or project.events(),
|
||||||
cascade_stop=cascade_stop,
|
cascade_stop=cascade_stop,
|
||||||
log_args=log_args)
|
log_args=log_args)
|
||||||
|
@ -3034,3 +3034,12 @@ services:
|
|||||||
another = self.project.get_service('--log-service')
|
another = self.project.get_service('--log-service')
|
||||||
assert len(service.containers()) == 1
|
assert len(service.containers()) == 1
|
||||||
assert len(another.containers()) == 1
|
assert len(another.containers()) == 1
|
||||||
|
|
||||||
|
def test_up_no_log_prefix(self):
|
||||||
|
self.base_dir = 'tests/fixtures/echo-services'
|
||||||
|
result = self.dispatch(['up', '--no-log-prefix'])
|
||||||
|
|
||||||
|
assert 'simple' in result.stdout
|
||||||
|
assert 'another' in result.stdout
|
||||||
|
assert 'exited with code 0' in result.stdout
|
||||||
|
assert 'exited with code 0' in result.stdout
|
||||||
|
Loading…
x
Reference in New Issue
Block a user