diff options
Diffstat (limited to 'deprecated/automation/common/logger.py')
-rw-r--r-- | deprecated/automation/common/logger.py | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/deprecated/automation/common/logger.py b/deprecated/automation/common/logger.py deleted file mode 100644 index 4aeee052..00000000 --- a/deprecated/automation/common/logger.py +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright 2010 Google Inc. All Rights Reserved. - -from itertools import chain -import gzip -import logging -import logging.handlers -import time -import traceback - - -def SetUpRootLogger(filename=None, level=None, display_flags={}): - console_handler = logging.StreamHandler() - console_handler.setFormatter(CustomFormatter(AnsiColorCoder(), display_flags)) - logging.root.addHandler(console_handler) - - if filename: - file_handler = logging.handlers.RotatingFileHandler( - filename, - maxBytes=10 * 1024 * 1024, - backupCount=9, - delay=True) - file_handler.setFormatter(CustomFormatter(NullColorCoder(), display_flags)) - logging.root.addHandler(file_handler) - - if level: - logging.root.setLevel(level) - - -class NullColorCoder(object): - - def __call__(self, *args): - return '' - - -class AnsiColorCoder(object): - CODES = {'reset': (0,), - 'bold': (1, 22), - 'italics': (3, 23), - 'underline': (4, 24), - 'inverse': (7, 27), - 'strikethrough': (9, 29), - 'black': (30, 40), - 'red': (31, 41), - 'green': (32, 42), - 'yellow': (33, 43), - 'blue': (34, 44), - 'magenta': (35, 45), - 'cyan': (36, 46), - 'white': (37, 47)} - - def __call__(self, *args): - codes = [] - - for arg in args: - if arg.startswith('bg-') or arg.startswith('no-'): - codes.append(self.CODES[arg[3:]][1]) - else: - codes.append(self.CODES[arg][0]) - - return '\033[%sm' % ';'.join(map(str, codes)) - - -class CustomFormatter(logging.Formatter): - COLORS = {'DEBUG': ('white',), - 'INFO': ('green',), - 'WARN': ('yellow', 'bold'), - 'ERROR': ('red', 'bold'), - 'CRIT': ('red', 'inverse', 'bold')} - - def __init__(self, coder, display_flags={}): - items = [] - - if display_flags.get('datetime', True): - items.append('%(asctime)s') - if display_flags.get('level', True): - items.append('%(levelname)s') - if display_flags.get('name', True): - items.append(coder('cyan') + '[%(threadName)s:%(name)s]' + coder('reset')) - items.append('%(prefix)s%(message)s') - - logging.Formatter.__init__(self, fmt=' '.join(items)) - - self._coder = coder - - def formatTime(self, record): - ct = self.converter(record.created) - t = time.strftime('%Y-%m-%d %H:%M:%S', ct) - return '%s.%02d' % (t, record.msecs / 10) - - def formatLevelName(self, record): - if record.levelname in ['WARNING', 'CRITICAL']: - levelname = record.levelname[:4] - else: - levelname = record.levelname - - return ''.join([self._coder(*self.COLORS[levelname]), levelname, - self._coder('reset')]) - - def formatMessagePrefix(self, record): - try: - return ' %s%s:%s ' % (self._coder('black', 'bold'), record.prefix, - self._coder('reset')) - except AttributeError: - return '' - - def format(self, record): - if record.exc_info: - if not record.exc_text: - record.exc_text = self.formatException(record.exc_info) - else: - record.exc_text = '' - - fmt = record.__dict__.copy() - fmt.update({'levelname': self.formatLevelName(record), - 'asctime': self.formatTime(record), - 'prefix': self.formatMessagePrefix(record)}) - - s = [] - - for line in chain(record.getMessage().splitlines(), - record.exc_text.splitlines()): - fmt['message'] = line - - s.append(self._fmt % fmt) - - return '\n'.join(s) - - -class CompressedFileHandler(logging.FileHandler): - - def _open(self): - return gzip.open(self.baseFilename + '.gz', self.mode, 9) - - -def HandleUncaughtExceptions(fun): - """Catches all exceptions that would go outside decorated fun scope.""" - - def _Interceptor(*args, **kwargs): - try: - return fun(*args, **kwargs) - except StandardError: - logging.exception('Uncaught exception:') - - return _Interceptor |