Changeset 1105
- Timestamp:
- 12/14/06 03:36:37 (2 years ago)
- Files:
-
- gaphor/branches/new-canvas/gaphor/misc/logger.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
gaphor/branches/new-canvas/gaphor/misc/logger.py
r529 r1105 1 # vim:sw=42 1 """ 3 2 Logger 4 3 5 4 Logger is a simple entry point for writing log messages. 5 6 It wraps the logging module and adds some basic configuration. 6 7 """ 7 import sys 8 import traceback 8 9 import logging 10 11 12 logging.basicConfig(level=logging.DEBUG, 13 format='%(asctime)s %(levelname)s %(message)s') 14 #format='%(asctime)s %(module)s:%(lineno)s %(levelname)s %(message)s') 15 #filename='/tmp/myapp.log', 16 #filemode='w') 17 9 18 10 19 class Logger(object): 11 DEBUG = 112 INFO = 213 WARNING = 314 ERROR = 415 CRITICAL = 520 DEBUG = logging.DEBUG 21 INFO = logging.INFO 22 WARNING = logging.WARNING 23 ERROR = logging.ERROR 24 CRITICAL = logging.CRITICAL 16 25 17 26 def __init__(self): 18 self.__log_level = Logger.DEBUG 19 self.__loggers = list() 20 21 def add_logger(self, logger): 22 self.__loggers.append(logger) 23 24 def remove_logger(self, logger): 25 try: 26 self.__loggers.remove(logger) 27 except: 28 pass 27 self.logger = logging.getLogger('') 29 28 30 29 def set_log_level(self, level): 31 assert level >= Logger.DEBUG and level <= Logger.CRITICAL 32 self.__log_level = level 30 self.logger.setLevel(level) 33 31 34 32 def get_log_level(self, level): 35 return self. __log_level33 return self.logger.getEffectiveLevel() 36 34 37 35 log_level = property(get_log_level, get_log_level, None, 'Log level') 38 36 39 37 def log(self, level, message, exc=None): 40 assert level >= Logger.DEBUG and level <= Logger.CRITICAL 41 for logger in self.__loggers: 42 try: 43 if logger(level, message, exc): 44 return 45 except Exception, e: 46 self.default_logger(Logger.ERROR, 47 'Could not write to logger %s: %s' % (logger, e)) 48 self.default_logger(level, message, exc) 38 self.logger.log(level, message, exc_info=exc) 49 39 50 40 def debug(self, message, exc=None): … … 63 53 self.log(Logger.CRITICAL, message, exc) 64 54 65 def default_logger(self, level, message, exc=None): 66 """The default logger sends log information to stdout. 67 """ 68 if level >= self.__log_level: 69 print '[Gaphor-%s] %s' % (('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL' )[level - 1], message) 70 if exc: 71 print '[Gaphor-Exception]', exc 72 print traceback.print_exc() 55 56 # vim:sw=4
