From 0e287bd171747d4e90f85cf93a9c488928d7b730 Mon Sep 17 00:00:00 2001 From: William Salmon Date: Thu, 20 Dec 2018 15:07:49 +0000 Subject: Add more log formatting options The 'wallclock-us' is a option that we thought we already had. --- buildstream/_frontend/widget.py | 17 +++++++++++++++-- tests/frontend/logging.py | 6 ++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/buildstream/_frontend/widget.py b/buildstream/_frontend/widget.py index c5353bc43..de122f8a3 100644 --- a/buildstream/_frontend/widget.py +++ b/buildstream/_frontend/widget.py @@ -94,12 +94,24 @@ class FixedText(Widget): # Used to add the wallclock time this message was created at class WallclockTime(Widget): + def __init__(self, context, content_profile, format_profile, output_format=False): + self._output_format = output_format + super(WallclockTime, self).__init__(context, content_profile, format_profile) + def render(self, message): + fields = [self.content_profile.fmt("{:02d}".format(x)) for x in [message.creation_time.hour, message.creation_time.minute, - message.creation_time.second]] - return self.format_profile.fmt(":").join(fields) + message.creation_time.second, + ] + ] + text = self.format_profile.fmt(":").join(fields) + + if self._output_format == 'us': + text += self.content_profile.fmt(".{:06d}".format(message.creation_time.microsecond)) + + return text # A widget for rendering the debugging column @@ -326,6 +338,7 @@ class LogLine(Widget): "elapsed": TimeCode(context, content_profile, format_profile, microseconds=False), "elapsed-us": TimeCode(context, content_profile, format_profile, microseconds=True), "wallclock": WallclockTime(context, content_profile, format_profile), + "wallclock-us": WallclockTime(context, content_profile, format_profile, output_format='us'), "key": CacheKey(context, content_profile, format_profile, err_profile), "element": ElementName(context, content_profile, format_profile), "action": TypeName(context, content_profile, format_profile), diff --git a/tests/frontend/logging.py b/tests/frontend/logging.py index 3243e74bc..ddaadfa26 100644 --- a/tests/frontend/logging.py +++ b/tests/frontend/logging.py @@ -52,7 +52,8 @@ def test_custom_logging(cli, tmpdir, datafiles): element_path = os.path.join(project, 'elements') element_name = 'fetch-test-git.bst' - custom_log_format = '%{elapsed},%{elapsed-us},%{wallclock},%{key},%{element},%{action},%{message}' + custom_log_format = ('%{elapsed},%{elapsed-us},%{wallclock},%{wallclock-us},' + '%{key},%{element},%{action},%{message}') user_config = {'logging': {'message-format': custom_log_format}} cli.configure(user_config) @@ -77,7 +78,8 @@ def test_custom_logging(cli, tmpdir, datafiles): result = cli.run(project=project, args=['source', 'fetch', element_name]) result.assert_success() - m = re.search(r"\d\d:\d\d:\d\d,\d\d:\d\d:\d\d.\d{6},\d\d:\d\d:\d\d,\s*,.*,SUCCESS,Checking sources", result.stderr) + m = re.search(r"\d\d:\d\d:\d\d,\d\d:\d\d:\d\d.\d{6},\d\d:\d\d:\d\d,\d\d:\d\d:\d\d.\d{6}\s*,.*" + r",SUCCESS,Checking sources", result.stderr) assert(m is not None) -- cgit v1.2.1