Skip to content
Snippets Groups Projects
Commit 91ace25f authored by William Salmon's avatar William Salmon
Browse files

Add more log formatting options

The 'wallclock-us' is a option that we thought we already had.

The base64 option is not human readable but should be quicker and dose
not lose information converting back and forth from human readable.
parent 583bd97d
No related branches found
No related tags found
No related merge requests found
Pipeline #45778378 canceled
......@@ -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),
......
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment