Home | History | Annotate | Download | only in utils
      1 # Copyright 2017 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 import logging
      6 import sys
      7 import time
      8 
      9 
     10 def AddLoggingArguments(parser):
     11   parser.add_argument(
     12       '-v', '--verbose', action='count', default=0,
     13       help='Log more. Use multiple times for even more logging.')
     14 
     15 
     16 def InitializeLogging(args, handler=None):
     17   if args.verbose == 0:
     18     log_level = logging.WARNING
     19   elif args.verbose == 1:
     20     log_level = logging.INFO
     21   else:
     22     log_level = logging.DEBUG
     23   logger = logging.getLogger()
     24   logger.setLevel(log_level)
     25   if not handler:
     26     handler = logging.StreamHandler(sys.stdout)
     27     handler.setFormatter(CustomFormatter())
     28   logger.addHandler(handler)
     29 
     30 
     31 class CustomFormatter(logging.Formatter):
     32   """Custom log formatter."""
     33 
     34   # override
     35   def __init__(self, fmt='%(threadName)-4s  %(message)s'):
     36     # Can't use super() because in older Python versions logging.Formatter does
     37     # not inherit from object.
     38     logging.Formatter.__init__(self, fmt=fmt)
     39     self._creation_time = time.time()
     40 
     41   # override
     42   def format(self, record):
     43     # Can't use super() because in older Python versions logging.Formatter does
     44     # not inherit from object.
     45     msg = logging.Formatter.format(self, record)
     46     if 'MainThread' in msg[:19]:
     47       msg = msg.replace('MainThread', 'Main', 1)
     48     timediff = time.time() - self._creation_time
     49     return '%s %8.3fs %s' % (record.levelname[0], timediff, msg)
     50 
     51