0

Revert "Merge remote-tracking branch 'exhuma/master', PR #963"

This reverts commit e26727943f, reversing
changes made to 7bbb077704.
This commit is contained in:
Aaron Griffith
2013-12-02 07:40:00 -05:00
parent a8a2a191b8
commit df732bfa25
11 changed files with 165 additions and 219 deletions

View File

@@ -20,8 +20,8 @@ import platform
import ctypes
from cStringIO import StringIO
# Some cool code for colored logging: For background, add 40. For foreground,
# add 30
# Some cool code for colored logging:
# For background, add 40. For foreground, add 30
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
RESET_SEQ = "\033[0m"
@@ -50,28 +50,6 @@ HIGHLIGHT = {
'WARNING': YELLOW,
}
LOG = logging.getLogger(__name__)
class InverseLevelFilter(object):
"""
This filter removes all messages *above* a certain threshold
(``max_level``). By default, setting a logger level will log all messages
*above* that level and ignore all messages *below* it. This filter
inverses this logic and only logs messages *below* the given level.
Note that the given level in ``max_level`` is *excluded* as well. This
means that ``InverseLevelFilter(logging.WARN)`` (the default) will log
messages with the level ``DEBUG`` and ``INFO`` (and everything in
between), but *not* ``WARN`` and above!.
"""
def __init__(self, max_level=logging.WARN):
self.max_level = max_level
def filter(self, record):
return record.levelno < self.max_level
class WindowsOutputStream(object):
"""A file-like object that proxies sys.stderr and interprets simple ANSI
@@ -287,44 +265,36 @@ def configure(loglevel=logging.INFO, verbose=False, simple=False):
"""
logger = logging.getLogger('overviewer_core')
logger.setLevel(loglevel)
is_windows = platform.system() == 'Windows'
logger = logging.getLogger()
outstream = sys.stdout
errstream = sys.stderr
errformatter = DumbFormatter(verbose)
outformatter = DumbFormatter(verbose)
if simple:
formatter = DumbFormatter(verbose)
if (is_windows or outstream.isatty()) and not simple:
# Our custom output stream processor knows how to deal with select
# ANSI color escape sequences
errformatter = ANSIColorFormatter(verbose)
outformatter = ANSIColorFormatter(verbose)
elif platform.system() == 'Windows':
# Our custom output stream processor knows how to deal with select ANSI
# color escape sequences
outstream = WindowsOutputStream(outstream)
formatter = ANSIColorFormatter(verbose)
elif outstream.isatty():
# terminal logging with ANSI color
formatter = ANSIColorFormatter(verbose)
if not logger.handlers:
# No handlers have been configure yet... (probably the first call of
# logger.configure)
else:
# Let's not assume anything. Just text.
formatter = DumbFormatter(verbose)
if is_windows:
outstream = WindowsOutputStream(outstream)
errstream = WindowsOutputStream(errstream)
if hasattr(logger, 'overviewerHandler'):
# we have already set up logging so just replace the formatter
# this time with the new values
logger.overviewerHandler.setFormatter(formatter)
logger.setLevel(loglevel)
out_handler = logging.StreamHandler(outstream)
out_handler.addFilter(InverseLevelFilter(max_level=logging.WARN))
out_handler.set_name('overviewer_stdout_handler')
err_handler = logging.StreamHandler(errstream)
err_handler.set_name('overviewer_stderr_handler')
err_handler.setLevel(logging.WARN)
logger.addHandler(out_handler)
logger.addHandler(err_handler)
try:
out_handler = logging._handlers['overviewer_stdout_handler']
err_handler = logging._handlers['overviewer_stderr_handler']
out_handler.setFormatter(outformatter)
err_handler.setFormatter(errformatter)
out_handler.setLevel(loglevel)
except KeyError as exc:
LOG.warn('Unable to change log handler format '
'(KeyError for {0})'.format(exc))
else:
# Save our handler here so we can tell which handler was ours if the
# function is called again
logger.overviewerHandler = logging.StreamHandler(outstream)
logger.overviewerHandler.setFormatter(formatter)
logger.addHandler(logger.overviewerHandler)
logger.setLevel(loglevel)