| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #
- # Module supporting logging
- #
- # processing/logger.py
- #
- # Copyright (c) 2006-2008, R Oudkerk --- see COPYING.txt
- #
- import sys
- __all__ = ['enableLogging', 'getLogger', 'subDebug',
- 'debug', 'info', 'subWarning']
- NOTSET = 0
- SUBDEBUG = 5
- DEBUG = 10
- INFO = 20
- SUBWARNING = 25
- DEFAULT_FORMAT = '[%(levelname)s/%(processName)s] %(message)s'
- _logger = None
- def subDebug(msg, *args):
- if _logger:
- _logger.log(SUBDEBUG, msg, *args)
- def debug(msg, *args):
- if _logger:
- _logger.log(DEBUG, msg, *args)
- def info(msg, *args):
- if _logger:
- _logger.log(INFO, msg, *args)
- def subWarning(msg, *args):
- if _logger:
- _logger.log(SUBWARNING, msg, *args)
- def getLogger():
- '''
- Returns logger used by processing
- '''
- return _logger
- def enableLogging(level, HandlerType=None, handlerArgs=(), format=None):
- '''
- Enable logging using `level` as the debug level
- '''
- global _logger
- import logging, atexit
- from processing import process
- logging._acquireLock()
- try:
- if _logger is None:
- temp = logging.getLogger('processing')
- temp._extra_args = (HandlerType, handlerArgs, format)
- _logger = temp
- _logger.propagate = 0
- def makeRecord(self, *args):
- record = self.__class__.makeRecord(self, *args)
- record.processName = process.currentProcess()._name
- return record
-
- MethodType = type(_logger.log)
- _logger.makeRecord = MethodType(makeRecord, _logger)
- logging.addLevelName(SUBDEBUG, 'SUBDEBUG')
- logging.addLevelName(SUBWARNING, 'SUBWARNING')
- # cleanup func of `processing` should run before that of `logging`
- atexit._exithandlers.remove((process._exitFunction, (), {}))
- atexit._exithandlers.append((process._exitFunction, (), {}))
- HandlerType = HandlerType or logging.StreamHandler
- if HandlerType:
- format = format or DEFAULT_FORMAT
- handler = HandlerType(*handlerArgs)
- handler.setFormatter(logging.Formatter(format))
- _logger.handlers = [handler] # overwrites any old handler
- _logger.setLevel(level)
- _logger._extra_args = (HandlerType, handlerArgs, format)
- else:
- _logger.setLevel(level)
- finally:
- logging._releaseLock()
|