Show
Ignore:
Timestamp:
11/29/08 00:12:43 (3 years ago)
Author:
chris@…
Branch:
default
Message:

Add ability to log to disk

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • StormSiren/Config.py

    r184 r188  
    4747import logging.config 
    4848 
     49 
    4950class Config(object): 
     51 
     52        DEFAULT_MAX_BYTES = 100000 
     53        DEFAULT_MAX_LOGS = 3 
     54 
    5055        def __init__(self, appname, config_file = None): 
    5156                self.__appname            = appname 
     
    105110                self.log.debug("Loading Configuration File") 
    106111                self.__configParser.read(self.__config_file) 
     112                self.__load_logging_settings() 
     113 
     114        def __load_logging_settings(self): 
     115                logger = logging.getLogger() #Get the root logger 
     116                shouldLogToDisk = self.get('main','logging',"False") 
     117                if(shouldLogToDisk == "True"): 
     118                        self.log.debug("User requesting logging to disk") 
     119                        logFile = self.get('log','file',None) 
     120                        if(not logFile): 
     121                                self.log.debug("No log file specified, using default") 
     122                                logFile = self.__config_dir + '/' + self.__appname + '.log' 
     123                        maxBytes = self.get('log','max_bytes',None) 
     124                        if(not maxBytes): 
     125                                self.log.debug("Max bytes per log file not specified, using default (%i bytes)", Config.DEFAULT_MAX_BYTES) 
     126                                maxBytes = Config.DEFAULT_MAX_BYTES 
     127                        maxLogs = self.get('log','max_logs',None) 
     128                        if(not maxLogs): 
     129                                self.log.debug("Max log files not specified, using default (%i log files)", Config.DEFAULT_MAX_LOGS) 
     130                                maxLogs = Config.DEFAULT_MAX_LOGS 
     131 
     132                        logFormat = self.get('log','log_format',None) 
     133                        if(not logFormat): 
     134                                self.log.debug("Log format not specified, using default") 
     135                                logFormat = logging.Formatter("%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s") 
     136                        else: 
     137                                logFormat = logging.Formatter(logFormat) 
     138 
     139                        handler = logging.handlers.RotatingFileHandler(logFile,"a",maxBytes,maxLogs) 
     140                        handler.setFormatter(logFormat) 
     141                        logger.addHandler(handler) 
    107142 
    108143        def __str__(self):