普通文本  |  52行  |  1.59 KB

# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""A simple script to print the log in a readable format.

Usage:   python tools/print_log.py <log_dir>
Example: python tools/print_log.py tests/log/lumpy
"""


import glob
import pickle
import os
import sys

# Need to have this line because pickle needs firmware_log module to load logs.
sys.path.append(os.getcwd())


def _print_log(log_dir):
    ext = '.log'
    filenames = glob.glob(os.path.join(log_dir, '*.log'))
    for filename in filenames:
        print 'Printing %s ...' % filename
        fw, date, glogs = pickle.load(open(filename))
        prefix_spaces = ' ' * 2
        print prefix_spaces + 'fw:   ', fw
        print prefix_spaces + 'date: ', date
        print prefix_spaces + 'glogs: '
        for glog in glogs:
            vlogs = glog.vlogs
            if not vlogs:
                continue

            print prefix_spaces * 2 + '(%s %s)' % (glog.name, glog.variation)
            for vlog in vlogs:
                print prefix_spaces * 4 + '%s: ' % vlog.name
                print prefix_spaces * 5 + 'score: %s' % str(vlog.score)
                for metric in vlog.metrics:
                    print (prefix_spaces * 5 + 'metric %s: %s' %
                           (metric.name, metric.value))
        print


if __name__ == '__main__':
    if len(sys.argv) != 2 or not os.path.exists(sys.argv[1]):
        print 'Usage: python tools/%s <log_dir>' % sys.argv[0]
        exit(1)
    log_dir = sys.argv[1]
    _print_log(log_dir)