From 42593bab58f9b692c5fe540b003a11d0c7951f15 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Thu, 3 Nov 2011 20:41:02 -0400 Subject: [PATCH] Use a terse logging line if --verbose is not specified --- overviewer.py | 40 ++++++++++++++++++++++++++-------------- overviewer_core/util.py | 21 ++++++++++++++++----- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/overviewer.py b/overviewer.py index 6d9a96d..6f41d7e 100755 --- a/overviewer.py +++ b/overviewer.py @@ -106,32 +106,47 @@ from overviewer_core import googlemap, rendernode helptext = """ %prog [OPTIONS] """ -def configure_logger(): +def configure_logger(options=None): "Configures the root logger to our liking" + if not options: + verbose = False + else: + verbose = options.verbose + + logger = logging.getLogger() + outstream = sys.stderr if platform.system() == 'Windows': # Our custom output stream processor knows how to deal with select ANSI # color escape sequences outstream = util.WindowsOutputStream() - formatter = util.ANSIColorFormatter() + formatter = util.ANSIColorFormatter(verbose) elif sys.stderr.isatty(): # terminal logging with ANSI color - formatter = util.ANSIColorFormatter() + formatter = util.ANSIColorFormatter(verbose) else: # Let's not assume anything. Just text. - formatter = util.DumbFormatter() + formatter = util.DumbFormatter(verbose) - logger = logging.getLogger() - handler = logging.StreamHandler(outstream) - handler.setFormatter(formatter) - logger.addHandler(handler) - logger.setLevel(logging.INFO) + if hasattr(logger, 'overviewerHandler'): + # we have already set up logging so just replace the formatter + # this time with the new values from options + logger.overviewerHandler.setFormatter(formatter) + logger.setLevel(logger.level + 10*options.quiet) + logger.setLevel(logger.level - 10*options.verbose) + + else: + logger.overviewerHandler = logging.StreamHandler(outstream) + logger.overviewerHandler.setFormatter(formatter) + logger.addHandler(logger.overviewerHandler) + logger.setLevel(logging.INFO) def main(): + # bootstrap the logger with defaults configure_logger() try: @@ -173,6 +188,8 @@ def main(): options, args = parser.parse_args() + # the details of the logger options can depend on the command line options + configure_logger(options) if options.version: try: @@ -315,11 +332,6 @@ dir but you forgot to put quotes around the directory, since it contains spaces. north_direction = options.north_direction else: north_direction = 'auto' - - logging.getLogger().setLevel( - logging.getLogger().level + 10*options.quiet) - logging.getLogger().setLevel( - logging.getLogger().level - 10*options.verbose) if options.changelist: try: diff --git a/overviewer_core/util.py b/overviewer_core/util.py index 4506db3..8a2947b 100644 --- a/overviewer_core/util.py +++ b/overviewer_core/util.py @@ -224,13 +224,17 @@ class HighlightingFormatter(logging.Formatter): """Base class of our custom formatter """ - fmtstr = '%(fileandlineno)-18s:PID(%(pid)s):%(asctime)s ' \ - '%(levelname)-8s %(message)s' - datefmt = "%H:%M:%S" + datefmt = "%Y-%m-%d %H:%M:%S" funcName_len = 15 - def __init__(self): - logging.Formatter.__init__(self, self.fmtstr, self.datefmt) + def __init__(self, verbose=False): + if verbose: + fmtstr = '%(fileandlineno)-18s %(pid)s %(asctime)s ' \ + '%(levelname)-8s %(message)s' + else: + fmtstr = '%(asctime)s ' '%(shortlevelname)-1s%(message)s' + + logging.Formatter.__init__(self, fmtstr, self.datefmt) def format(self, record): """Add a few extra options to the record @@ -244,8 +248,15 @@ class HighlightingFormatter(logging.Formatter): funcName The function name truncated/padded to a fixed width characters + + shortlevelname + The level name truncated to 1 character """ + + record.shortlevelname = record.levelname[0] + ' ' + if record.levelname == 'INFO': record.shortlevelname = '' + record.pid = os.getpid() record.fileandlineno = "%s:%s" % (record.filename, record.lineno)