diff --git a/buildstream/_frontend/widget.py b/buildstream/_frontend/widget.py
index c5353bc432cffb8485be331cb4761f2d61e607b7..cc459c1a86b9ba821bab0800938d50a4b38193d8 100644
--- a/buildstream/_frontend/widget.py
+++ b/buildstream/_frontend/widget.py
@@ -8,7 +8,7 @@
 #
 #  This library is distributed in the hope that it will be useful,
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 #  Lesser General Public License for more details.
 #
 #  You should have received a copy of the GNU Lesser General Public
@@ -17,6 +17,7 @@
 #  Authors:
 #        Tristan Van Berkom <tristan.vanberkom@codethink.co.uk>
 import datetime
+import base64
 import os
 from collections import defaultdict, OrderedDict
 from contextlib import ExitStack
@@ -94,12 +95,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.format_profile.fmt(".{:06d}".format(message.creation_time.microsecond))
+
+        return text
 
 
 # A widget for rendering the debugging column
@@ -326,6 +339,8 @@ 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'),
+            "wallclock-base64": WallclockTime(context, content_profile, format_profile, output_format='base64'),
             "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 3243e74bc2f3fc178f5f6cdd3cf540d34756c68b..ddaadfa266dc7855a504df91b80a9b2dff14ed27 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)