Viewing file: patcher.py (1.23 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Copyright (C) 2012 Canonical Ltd. # Copyright (C) 2012 Yahoo! Inc. # # Author: Scott Moser <scott.moser@canonical.com> # Author: Joshua Harlow <harlowja@yahoo-inc.com> # # This file is part of cloud-init. See LICENSE file for license information.
import imp import logging import sys
# Default fallback format FALL_FORMAT = ('FALLBACK: %(asctime)s - %(filename)s[%(levelname)s]: ' + '%(message)s')
class QuietStreamHandler(logging.StreamHandler): def handleError(self, record): pass
def _patch_logging(): # Replace 'handleError' with one that will be more # tolerant of errors in that it can avoid # re-notifying on exceptions and when errors # do occur, it can at least try to write to # sys.stderr using a fallback logger fallback_handler = QuietStreamHandler(sys.stderr) fallback_handler.setFormatter(logging.Formatter(FALL_FORMAT))
def handleError(self, record): try: fallback_handler.handle(record) fallback_handler.flush() except IOError: pass setattr(logging.Handler, 'handleError', handleError)
def patch(): imp.acquire_lock() try: _patch_logging() finally: imp.release_lock()
# vi: ts=4 expandtab
|