home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __all__ = [
- 'BASIC_FORMAT',
- 'BufferingFormatter',
- 'CRITICAL',
- 'DEBUG',
- 'ERROR',
- 'FATAL',
- 'FileHandler',
- 'Filter',
- 'Formatter',
- 'Handler',
- 'INFO',
- 'LogRecord',
- 'Logger',
- 'LoggerAdapter',
- 'NOTSET',
- 'NullHandler',
- 'StreamHandler',
- 'WARN',
- 'WARNING',
- 'addLevelName',
- 'basicConfig',
- 'captureWarnings',
- 'critical',
- 'debug',
- 'disable',
- 'error',
- 'exception',
- 'fatal',
- 'getLevelName',
- 'getLogger',
- 'getLoggerClass',
- 'info',
- 'log',
- 'makeLogRecord',
- 'setLoggerClass',
- 'warn',
- 'warning']
- import sys
- import os
- import types
- import time
- import string
- import cStringIO
- import traceback
-
- try:
- import codecs
- except ImportError:
- codecs = None
-
-
- try:
- import thread
- import threading
- except ImportError:
- thread = None
-
- __author__ = 'Vinay Sajip <vinay_sajip@red-dove.com>'
- __status__ = 'production'
- __version__ = '0.5.0.5'
- __date__ = '17 February 2009'
- if hasattr(sys, 'frozen'):
- _srcfile = 'logging%s__init__%s' % (os.sep, __file__[-4:])
- elif string.lower(__file__[-4:]) in ('.pyc', '.pyo'):
- _srcfile = __file__[:-4] + '.py'
- else:
- _srcfile = __file__
- _srcfile = os.path.normcase(_srcfile)
-
- def currentframe():
-
- try:
- raise Exception
- except:
- return sys.exc_traceback.tb_frame.f_back
-
-
- if hasattr(sys, '_getframe'):
-
- currentframe = lambda : sys._getframe(3)
-
- _startTime = time.time()
- raiseExceptions = 1
- logThreads = 1
- logMultiprocessing = 1
- logProcesses = 1
- CRITICAL = 50
- FATAL = CRITICAL
- ERROR = 40
- WARNING = 30
- WARN = WARNING
- INFO = 20
- DEBUG = 10
- NOTSET = 0
- _levelNames = {
- CRITICAL: 'CRITICAL',
- ERROR: 'ERROR',
- WARNING: 'WARNING',
- INFO: 'INFO',
- DEBUG: 'DEBUG',
- NOTSET: 'NOTSET',
- 'CRITICAL': CRITICAL,
- 'ERROR': ERROR,
- 'WARN': WARNING,
- 'WARNING': WARNING,
- 'INFO': INFO,
- 'DEBUG': DEBUG,
- 'NOTSET': NOTSET }
-
- def getLevelName(level):
- return _levelNames.get(level, 'Level %s' % level)
-
-
- def addLevelName(level, levelName):
- _acquireLock()
-
- try:
- _levelNames[level] = levelName
- _levelNames[levelName] = level
- finally:
- _releaseLock()
-
-
- _lock = None
-
- def _acquireLock():
- global _lock
- if not _lock and thread:
- _lock = threading.RLock()
-
- if _lock:
- _lock.acquire()
-
-
-
- def _releaseLock():
- if _lock:
- _lock.release()
-
-
-
- class LogRecord:
-
- def __init__(self, name, level, pathname, lineno, msg, args, exc_info, func = None):
- ct = time.time()
- self.name = name
- self.msg = msg
- if args and len(args) == 1 and type(args[0]) == types.DictType and args[0]:
- args = args[0]
-
- self.args = args
- self.levelname = getLevelName(level)
- self.levelno = level
- self.pathname = pathname
-
- try:
- self.filename = os.path.basename(pathname)
- self.module = os.path.splitext(self.filename)[0]
- except (TypeError, ValueError, AttributeError):
- self.filename = pathname
- self.module = 'Unknown module'
-
- self.exc_info = exc_info
- self.exc_text = None
- self.lineno = lineno
- self.funcName = func
- self.created = ct
- self.msecs = (ct - long(ct)) * 1000
- self.relativeCreated = (self.created - _startTime) * 1000
- if logThreads and thread:
- self.thread = thread.get_ident()
- self.threadName = threading.current_thread().name
- else:
- self.thread = None
- self.threadName = None
- if not logMultiprocessing:
- self.processName = None
- else:
-
- try:
- current_process = current_process
- import multiprocessing
- self.processName = current_process().name
- except ImportError:
- self.processName = None
-
- if logProcesses and hasattr(os, 'getpid'):
- self.process = os.getpid()
- else:
- self.process = None
-
-
- def __str__(self):
- return '<LogRecord: %s, %s, %s, %s, "%s">' % (self.name, self.levelno, self.pathname, self.lineno, self.msg)
-
-
- def getMessage(self):
- if not hasattr(types, 'UnicodeType'):
- msg = str(self.msg)
- else:
- msg = self.msg
- if type(msg) not in (types.UnicodeType, types.StringType):
-
- try:
- msg = str(self.msg)
- except UnicodeError:
- msg = self.msg
- except:
- None<EXCEPTION MATCH>UnicodeError
-
-
- None<EXCEPTION MATCH>UnicodeError
- if self.args:
- msg = msg % self.args
-
- return msg
-
-
-
- def makeLogRecord(dict):
- rv = LogRecord(None, None, '', 0, '', (), None, None)
- rv.__dict__.update(dict)
- return rv
-
-
- class Formatter:
- converter = time.localtime
-
- def __init__(self, fmt = None, datefmt = None):
- if fmt:
- self._fmt = fmt
- else:
- self._fmt = '%(message)s'
- self.datefmt = datefmt
-
-
- def formatTime(self, record, datefmt = None):
- ct = self.converter(record.created)
- if datefmt:
- s = time.strftime(datefmt, ct)
- else:
- t = time.strftime('%Y-%m-%d %H:%M:%S', ct)
- s = '%s,%03d' % (t, record.msecs)
- return s
-
-
- def formatException(self, ei):
- sio = cStringIO.StringIO()
- traceback.print_exception(ei[0], ei[1], ei[2], None, sio)
- s = sio.getvalue()
- sio.close()
- if s[-1:] == '\n':
- s = s[:-1]
-
- return s
-
-
- def format(self, record):
- record.message = record.getMessage()
- if string.find(self._fmt, '%(asctime)') >= 0:
- record.asctime = self.formatTime(record, self.datefmt)
-
- s = self._fmt % record.__dict__
- if record.exc_info:
- if not record.exc_text:
- record.exc_text = self.formatException(record.exc_info)
-
-
- if record.exc_text:
- if s[-1:] != '\n':
- s = s + '\n'
-
- s = s + record.exc_text
-
- return s
-
-
- _defaultFormatter = Formatter()
-
- class BufferingFormatter:
-
- def __init__(self, linefmt = None):
- if linefmt:
- self.linefmt = linefmt
- else:
- self.linefmt = _defaultFormatter
-
-
- def formatHeader(self, records):
- return ''
-
-
- def formatFooter(self, records):
- return ''
-
-
- def format(self, records):
- rv = ''
- if len(records) > 0:
- rv = rv + self.formatHeader(records)
- for record in records:
- rv = rv + self.linefmt.format(record)
-
- rv = rv + self.formatFooter(records)
-
- return rv
-
-
-
- class Filter:
-
- def __init__(self, name = ''):
- self.name = name
- self.nlen = len(name)
-
-
- def filter(self, record):
- if self.nlen == 0:
- return 1
- if self.name == record.name:
- return 1
- if string.find(record.name, self.name, 0, self.nlen) != 0:
- return 0
- return record.name[self.nlen] == '.'
-
-
-
- class Filterer:
-
- def __init__(self):
- self.filters = []
-
-
- def addFilter(self, filter):
- if filter not in self.filters:
- self.filters.append(filter)
-
-
-
- def removeFilter(self, filter):
- if filter in self.filters:
- self.filters.remove(filter)
-
-
-
- def filter(self, record):
- rv = 1
- for f in self.filters:
- if not f.filter(record):
- rv = 0
- break
- continue
-
- return rv
-
-
- _handlers = { }
- _handlerList = []
-
- class Handler(Filterer):
-
- def __init__(self, level = NOTSET):
- Filterer.__init__(self)
- self.level = level
- self.formatter = None
- _acquireLock()
-
- try:
- _handlers[self] = 1
- _handlerList.insert(0, self)
- finally:
- _releaseLock()
-
- self.createLock()
-
-
- def createLock(self):
- if thread:
- self.lock = threading.RLock()
- else:
- self.lock = None
-
-
- def acquire(self):
- if self.lock:
- self.lock.acquire()
-
-
-
- def release(self):
- if self.lock:
- self.lock.release()
-
-
-
- def setLevel(self, level):
- self.level = level
-
-
- def format(self, record):
- if self.formatter:
- fmt = self.formatter
- else:
- fmt = _defaultFormatter
- return fmt.format(record)
-
-
- def emit(self, record):
- raise NotImplementedError, 'emit must be implemented by Handler subclasses'
-
-
- def handle(self, record):
- rv = self.filter(record)
- if rv:
- self.acquire()
-
- try:
- self.emit(record)
- finally:
- self.release()
-
-
- return rv
-
-
- def setFormatter(self, fmt):
- self.formatter = fmt
-
-
- def flush(self):
- pass
-
-
- def close(self):
- _acquireLock()
-
- try:
- del _handlers[self]
- _handlerList.remove(self)
- finally:
- _releaseLock()
-
-
-
- def handleError(self, record):
- if raiseExceptions:
- ei = sys.exc_info()
-
- try:
- traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
- except IOError:
- pass
- finally:
- del ei
-
-
-
-
-
- class StreamHandler(Handler):
-
- def __init__(self, strm = None):
- Handler.__init__(self)
- if strm is None:
- strm = sys.stderr
-
- self.stream = strm
-
-
- def flush(self):
- if self.stream and hasattr(self.stream, 'flush'):
- self.stream.flush()
-
-
-
- def emit(self, record):
-
- try:
- msg = self.format(record)
- stream = self.stream
- fs = '%s\n'
- if not hasattr(types, 'UnicodeType'):
- stream.write(fs % msg)
- else:
-
- try:
- if isinstance(msg, unicode) and getattr(stream, 'encoding', None):
- fs = fs.decode(stream.encoding)
-
- try:
- stream.write(fs % msg)
- except UnicodeEncodeError:
- stream.write((fs % msg).encode(stream.encoding))
- except:
- None<EXCEPTION MATCH>UnicodeEncodeError
-
-
- None<EXCEPTION MATCH>UnicodeEncodeError
- stream.write(fs % msg)
- except UnicodeError:
- stream.write(fs % msg.encode('UTF-8'))
-
- self.flush()
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- self.handleError(record)
-
-
-
-
- class FileHandler(StreamHandler):
-
- def __init__(self, filename, mode = 'a', encoding = None, delay = 0):
- if codecs is None:
- encoding = None
-
- self.baseFilename = os.path.abspath(filename)
- self.mode = mode
- self.encoding = encoding
- if delay:
- Handler.__init__(self)
- self.stream = None
- else:
- StreamHandler.__init__(self, self._open())
-
-
- def close(self):
- if self.stream:
- self.flush()
- if hasattr(self.stream, 'close'):
- self.stream.close()
-
- StreamHandler.close(self)
- self.stream = None
-
-
-
- def _open(self):
- if self.encoding is None:
- stream = open(self.baseFilename, self.mode)
- else:
- stream = codecs.open(self.baseFilename, self.mode, self.encoding)
- return stream
-
-
- def emit(self, record):
- if self.stream is None:
- self.stream = self._open()
-
- StreamHandler.emit(self, record)
-
-
-
- class PlaceHolder:
-
- def __init__(self, alogger):
- self.loggerMap = {
- alogger: None }
-
-
- def append(self, alogger):
- if alogger not in self.loggerMap:
- self.loggerMap[alogger] = None
-
-
-
- _loggerClass = None
-
- def setLoggerClass(klass):
- global _loggerClass
- if klass != Logger:
- if not issubclass(klass, Logger):
- raise TypeError, 'logger not derived from logging.Logger: ' + klass.__name__
- issubclass(klass, Logger)
-
- _loggerClass = klass
-
-
- def getLoggerClass():
- return _loggerClass
-
-
- class Manager:
-
- def __init__(self, rootnode):
- self.root = rootnode
- self.disable = 0
- self.emittedNoHandlerWarning = 0
- self.loggerDict = { }
-
-
- def getLogger(self, name):
- rv = None
- _acquireLock()
-
- try:
- if name in self.loggerDict:
- rv = self.loggerDict[name]
- if isinstance(rv, PlaceHolder):
- ph = rv
- rv = _loggerClass(name)
- rv.manager = self
- self.loggerDict[name] = rv
- self._fixupChildren(ph, rv)
- self._fixupParents(rv)
-
- else:
- rv = _loggerClass(name)
- rv.manager = self
- self.loggerDict[name] = rv
- self._fixupParents(rv)
- finally:
- _releaseLock()
-
- return rv
-
-
- def _fixupParents(self, alogger):
- name = alogger.name
- i = string.rfind(name, '.')
- rv = None
- while i > 0 and not rv:
- substr = name[:i]
- if substr not in self.loggerDict:
- self.loggerDict[substr] = PlaceHolder(alogger)
- else:
- obj = self.loggerDict[substr]
- if isinstance(obj, Logger):
- rv = obj
- else:
- obj.append(alogger)
- i = string.rfind(name, '.', 0, i - 1)
- if not rv:
- rv = self.root
-
- alogger.parent = rv
-
-
- def _fixupChildren(self, ph, alogger):
- name = alogger.name
- namelen = len(name)
- for c in ph.loggerMap.keys():
- if c.parent.name[:namelen] != name:
- alogger.parent = c.parent
- c.parent = alogger
- continue
-
-
-
-
- class Logger(Filterer):
-
- def __init__(self, name, level = NOTSET):
- Filterer.__init__(self)
- self.name = name
- self.level = level
- self.parent = None
- self.propagate = 1
- self.handlers = []
- self.disabled = 0
-
-
- def setLevel(self, level):
- self.level = level
-
-
- def debug(self, msg, *args, **kwargs):
- if self.isEnabledFor(DEBUG):
- self._log(DEBUG, msg, args, **kwargs)
-
-
-
- def info(self, msg, *args, **kwargs):
- if self.isEnabledFor(INFO):
- self._log(INFO, msg, args, **kwargs)
-
-
-
- def warning(self, msg, *args, **kwargs):
- if self.isEnabledFor(WARNING):
- self._log(WARNING, msg, args, **kwargs)
-
-
- warn = warning
-
- def error(self, msg, *args, **kwargs):
- if self.isEnabledFor(ERROR):
- self._log(ERROR, msg, args, **kwargs)
-
-
-
- def exception(self, msg, *args):
- self.error(*(msg,) + args, **{
- 'exc_info': 1 })
-
-
- def critical(self, msg, *args, **kwargs):
- if self.isEnabledFor(CRITICAL):
- self._log(CRITICAL, msg, args, **kwargs)
-
-
- fatal = critical
-
- def log(self, level, msg, *args, **kwargs):
- if type(level) != types.IntType:
- if raiseExceptions:
- raise TypeError, 'level must be an integer'
- raiseExceptions
- return None
- type(level) != types.IntType
- if self.isEnabledFor(level):
- self._log(level, msg, args, **kwargs)
-
-
-
- def findCaller(self):
- f = currentframe()
- if f is not None:
- f = f.f_back
-
- rv = ('(unknown file)', 0, '(unknown function)')
- while hasattr(f, 'f_code'):
- co = f.f_code
- filename = os.path.normcase(co.co_filename)
- if filename == _srcfile:
- f = f.f_back
- continue
-
- rv = (filename, f.f_lineno, co.co_name)
- break
- return rv
-
-
- def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func = None, extra = None):
- rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func)
- if extra is not None:
- for key in extra:
- if key in ('message', 'asctime') or key in rv.__dict__:
- raise KeyError('Attempt to overwrite %r in LogRecord' % key)
- key in rv.__dict__
- rv.__dict__[key] = extra[key]
-
-
- return rv
-
-
- def _log(self, level, msg, args, exc_info = None, extra = None):
- if _srcfile:
-
- try:
- (fn, lno, func) = self.findCaller()
- except ValueError:
- (fn, lno, func) = ('(unknown file)', 0, '(unknown function)')
- except:
- None<EXCEPTION MATCH>ValueError
-
-
- None<EXCEPTION MATCH>ValueError
- (fn, lno, func) = ('(unknown file)', 0, '(unknown function)')
- if exc_info:
- if type(exc_info) != types.TupleType:
- exc_info = sys.exc_info()
-
-
- record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra)
- self.handle(record)
-
-
- def handle(self, record):
- if not (self.disabled) and self.filter(record):
- self.callHandlers(record)
-
-
-
- def addHandler(self, hdlr):
- if hdlr not in self.handlers:
- self.handlers.append(hdlr)
-
-
-
- def removeHandler(self, hdlr):
- if hdlr in self.handlers:
- hdlr.acquire()
-
- try:
- self.handlers.remove(hdlr)
- finally:
- hdlr.release()
-
-
-
-
- def callHandlers(self, record):
- c = self
- found = 0
- while c:
- for hdlr in c.handlers:
- found = found + 1
- if record.levelno >= hdlr.level:
- hdlr.handle(record)
- continue
-
- if not c.propagate:
- c = None
- continue
- c = c.parent
- if found == 0 and raiseExceptions and not (self.manager.emittedNoHandlerWarning):
- sys.stderr.write('No handlers could be found for logger "%s"\n' % self.name)
- self.manager.emittedNoHandlerWarning = 1
-
-
-
- def getEffectiveLevel(self):
- logger = self
- while logger:
- if logger.level:
- return logger.level
- logger = logger.parent
- continue
- logger.level
- return NOTSET
-
-
- def isEnabledFor(self, level):
- if self.manager.disable >= level:
- return 0
- return level >= self.getEffectiveLevel()
-
-
-
- class RootLogger(Logger):
-
- def __init__(self, level):
- Logger.__init__(self, 'root', level)
-
-
- _loggerClass = Logger
-
- class LoggerAdapter:
-
- def __init__(self, logger, extra):
- self.logger = logger
- self.extra = extra
-
-
- def process(self, msg, kwargs):
- kwargs['extra'] = self.extra
- return (msg, kwargs)
-
-
- def debug(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.debug(msg, *args, **kwargs)
-
-
- def info(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.info(msg, *args, **kwargs)
-
-
- def warning(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.warning(msg, *args, **kwargs)
-
-
- def error(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.error(msg, *args, **kwargs)
-
-
- def exception(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- kwargs['exc_info'] = 1
- self.logger.error(msg, *args, **kwargs)
-
-
- def critical(self, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.critical(msg, *args, **kwargs)
-
-
- def log(self, level, msg, *args, **kwargs):
- (msg, kwargs) = self.process(msg, kwargs)
- self.logger.log(level, msg, *args, **kwargs)
-
-
- root = RootLogger(WARNING)
- Logger.root = root
- Logger.manager = Manager(Logger.root)
- BASIC_FORMAT = '%(levelname)s:%(name)s:%(message)s'
-
- def basicConfig(**kwargs):
- if len(root.handlers) == 0:
- filename = kwargs.get('filename')
- if filename:
- mode = kwargs.get('filemode', 'a')
- hdlr = FileHandler(filename, mode)
- else:
- stream = kwargs.get('stream')
- hdlr = StreamHandler(stream)
- fs = kwargs.get('format', BASIC_FORMAT)
- dfs = kwargs.get('datefmt', None)
- fmt = Formatter(fs, dfs)
- hdlr.setFormatter(fmt)
- root.addHandler(hdlr)
- level = kwargs.get('level')
- if level is not None:
- root.setLevel(level)
-
-
-
-
- def getLogger(name = None):
- if name:
- return Logger.manager.getLogger(name)
- return root
-
-
- def critical(msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.critical(*(msg,) + args, **kwargs)
-
- fatal = critical
-
- def error(msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.error(*(msg,) + args, **kwargs)
-
-
- def exception(msg, *args):
- error(*(msg,) + args, **{
- 'exc_info': 1 })
-
-
- def warning(msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.warning(*(msg,) + args, **kwargs)
-
- warn = warning
-
- def info(msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.info(*(msg,) + args, **kwargs)
-
-
- def debug(msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.debug(*(msg,) + args, **kwargs)
-
-
- def log(level, msg, *args, **kwargs):
- if len(root.handlers) == 0:
- basicConfig()
-
- root.log(*(level, msg) + args, **kwargs)
-
-
- def disable(level):
- root.manager.disable = level
-
-
- def shutdown(handlerList = _handlerList):
- for h in handlerList[:]:
-
- try:
- h.flush()
- h.close()
- continue
- if raiseExceptions:
- raise
- raiseExceptions
- continue
-
-
-
-
- try:
- import atexit
- atexit.register(shutdown)
- except ImportError:
-
- def exithook(status, old_exit = sys.exit):
-
- try:
- shutdown()
- finally:
- old_exit(status)
-
-
- sys.exit = exithook
-
-