mirror of
https://github.com/docker/compose.git
synced 2025-04-08 17:05:13 +02:00
Added option to disable log prefix via cli
Signed-off-by: Kaushal Rohit <rohit.kg98@gmail.com>
This commit is contained in:
parent
a24843e1e4
commit
cddaa77fea
@ -16,18 +16,22 @@ from compose.utils import split_buffer
|
||||
|
||||
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.color_func = color_func
|
||||
self.keep_prefix = keep_prefix
|
||||
|
||||
def present(self, container, line):
|
||||
prefix = container.name_without_project.ljust(self.prefix_width)
|
||||
return '{prefix} {line}'.format(
|
||||
prefix=self.color_func(prefix + ' |'),
|
||||
line=line)
|
||||
to_log = '{line}'.format(line=line)
|
||||
|
||||
if self.keep_prefix:
|
||||
prefix = container.name_without_project.ljust(self.prefix_width)
|
||||
to_log = '{prefix} '.format(prefix=self.color_func(prefix + ' |')) + to_log
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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):
|
||||
|
@ -610,11 +610,12 @@ class TopLevelCommand:
|
||||
Usage: logs [options] [--] [SERVICE...]
|
||||
|
||||
Options:
|
||||
--no-color Produce monochrome output.
|
||||
-f, --follow Follow log output.
|
||||
-t, --timestamps Show timestamps.
|
||||
--tail="all" Number of lines to show from the end of the logs
|
||||
for each container.
|
||||
--no-color Produce monochrome output.
|
||||
-f, --follow Follow log output.
|
||||
-t, --timestamps Show timestamps.
|
||||
--tail="all" Number of lines to show from the end of the logs
|
||||
for each container.
|
||||
--no-log-prefix Don't print prefix in logs.
|
||||
"""
|
||||
containers = self.project.containers(service_names=options['SERVICE'], stopped=True)
|
||||
|
||||
@ -635,7 +636,8 @@ class TopLevelCommand:
|
||||
containers,
|
||||
set_no_color_if_clicolor(options['--no-color']),
|
||||
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):
|
||||
"""
|
||||
@ -1017,6 +1019,7 @@ class TopLevelCommand:
|
||||
container. Implies --abort-on-container-exit.
|
||||
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the
|
||||
`scale` setting in the Compose file if present.
|
||||
--no-log-prefix Don't print prefix in logs.
|
||||
"""
|
||||
start_deps = not options['--no-deps']
|
||||
always_recreate_deps = options['--always-recreate-deps']
|
||||
@ -1028,6 +1031,7 @@ class TopLevelCommand:
|
||||
detached = options.get('--detach')
|
||||
no_start = options.get('--no-start')
|
||||
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):
|
||||
raise UserError(
|
||||
@ -1094,7 +1098,8 @@ class TopLevelCommand:
|
||||
set_no_color_if_clicolor(options['--no-color']),
|
||||
{'follow': True},
|
||||
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))
|
||||
cascade_starter = log_printer.run()
|
||||
|
||||
@ -1382,10 +1387,11 @@ def log_printer_from_project(
|
||||
log_args,
|
||||
cascade_stop=False,
|
||||
event_stream=None,
|
||||
keep_prefix=True,
|
||||
):
|
||||
return LogPrinter(
|
||||
containers,
|
||||
build_log_presenters(project.service_names, monochrome),
|
||||
build_log_presenters(project.service_names, monochrome, keep_prefix),
|
||||
event_stream or project.events(),
|
||||
cascade_stop=cascade_stop,
|
||||
log_args=log_args)
|
||||
|
@ -3034,3 +3034,12 @@ services:
|
||||
another = self.project.get_service('--log-service')
|
||||
assert len(service.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