Home | History | Annotate | Download | only in utils
      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 
      7 import logging
      8 import sys
      9 import time
     10 
     11 
     12 class 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 
     33 def 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