|  | #!/usr/bin/env python | 
|  | # | 
|  | # Copyright 2021 - The Android Open Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the',  help='License'); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an',  help='AS IS' BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | import datetime | 
|  | import logging | 
|  | import time | 
|  |  | 
|  |  | 
|  | class TimeFormatter(logging.Formatter): | 
|  | """A formatter used by the build system that: | 
|  |  | 
|  | - Strips whitespace. | 
|  | - Formats time since start | 
|  | """ | 
|  |  | 
|  | def __init__(self, fmt=None): | 
|  | self.start_time = time.time() | 
|  | super(TimeFormatter, self).__init__(fmt) | 
|  |  | 
|  | def formatTime(self, record, datefmt=None): | 
|  | fmt = datefmt or "%H:%M:%S" | 
|  | ct = self.converter(record.created) | 
|  | dt = datetime.timedelta(seconds=record.created - self.start_time) | 
|  | mm, ss = divmod(dt.total_seconds(), 60) | 
|  | _, mm = divmod(mm, 60) | 
|  | # 2 digit precision is sufficient. | 
|  | dt_fmt = "%02d:%02d.%-2d" % (mm, ss, dt.microseconds % 100) | 
|  | return "{}({})".format(time.strftime(fmt, ct), dt_fmt) | 
|  |  | 
|  | def format(self, record): | 
|  | record.msg = str(record.msg).strip() | 
|  | return super(TimeFormatter, self).format(record) |