1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Helper functions common to native, java and host-driven test runners."""
6
7import logging
8import sys
9import time
10
11
12class CustomFormatter(logging.Formatter):
13  """Custom log formatter."""
14
15  # override
16  def __init__(self, fmt='%(threadName)-4s  %(message)s'):
17    # Can't use super() because in older Python versions logging.Formatter does
18    # not inherit from object.
19    logging.Formatter.__init__(self, fmt=fmt)
20    self._creation_time = time.time()
21
22  # override
23  def format(self, record):
24    # Can't use super() because in older Python versions logging.Formatter does
25    # not inherit from object.
26    msg = logging.Formatter.format(self, record)
27    if 'MainThread' in msg[:19]:
28      msg = msg.replace('MainThread', 'Main', 1)
29    timediff = time.time() - self._creation_time
30    return '%s %8.3fs %s' % (record.levelname[0], timediff, msg)
31
32
33def SetLogLevel(verbose_count):
34  """Sets log level as |verbose_count|."""
35  log_level = logging.WARNING  # Default.
36  if verbose_count == 1:
37    log_level = logging.INFO
38  elif verbose_count >= 2:
39    log_level = logging.DEBUG
40  logger = logging.getLogger()
41  logger.setLevel(log_level)
42  custom_handler = logging.StreamHandler(sys.stdout)
43  custom_handler.setFormatter(CustomFormatter())
44  logging.getLogger().addHandler(custom_handler)
45