Changeset 1105

Show
Ignore:
Timestamp:
12/14/06 03:36:37 (2 years ago)
Author:
arjanmol
Message:

Switched logger.py to use the logging module.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gaphor/branches/new-canvas/gaphor/misc/logger.py

    r529 r1105  
    1 # vim:sw=4 
    21""" 
    32Logger 
    43 
    54Logger is a simple entry point for writing log messages. 
     5 
     6It wraps the logging module and adds some basic configuration. 
    67""" 
    7 import sys 
    8 import traceback 
     8 
     9import logging 
     10 
     11 
     12logging.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 
    918 
    1019class Logger(object): 
    11     DEBUG = 1 
    12     INFO = 2 
    13     WARNING = 3 
    14     ERROR = 4 
    15     CRITICAL = 5 
     20    DEBUG = logging.DEBUG 
     21    INFO = logging.INFO 
     22    WARNING = logging.WARNING 
     23    ERROR = logging.ERROR 
     24    CRITICAL = logging.CRITICAL 
    1625 
    1726    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('') 
    2928 
    3029    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) 
    3331         
    3432    def get_log_level(self, level): 
    35         return self.__log_level 
     33        return self.logger.getEffectiveLevel() 
    3634 
    3735    log_level = property(get_log_level, get_log_level, None, 'Log level') 
    3836 
    3937    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) 
    4939 
    5040    def debug(self, message, exc=None): 
     
    6353        self.log(Logger.CRITICAL, message, exc) 
    6454 
    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