#! /usr/bin/env python import os, logging, logging.handlers, logging.config class FileLogger(object): LOG_DIR = os.path.normpath(os.path.expanduser('~/testlog')) LOG_FILENAME = os.path.join(LOG_DIR, 'really_cool_logging.log') CONF_FILENAME = os.path.join(LOG_DIR, 'really_cool_logging.conf') #------------------------------------------------------------------------------- def __init__(self): self.fileConfig() self.log = logging.getLogger('Log') #------------------------------------------------------------------------------- def fileConfig(self): ''' Tests for, sets up and reads the file config for the logging of the commands ''' if (not os.path.isdir(FileLogger.LOG_DIR)): os.mkdir(FileLogger.LOG_DIR) if (not os.path.isfile(FileLogger.CONF_FILENAME)): self.writeDefaultConfig() logging.config.fileConfig(FileLogger.CONF_FILENAME) #------------------------------------------------------------------------------- def writeDefaultConfig(self): ''' Writes the default config out ''' conf_file = open(FileLogger.CONF_FILENAME, 'w') default_conf = ''' ######################################################################## # KEYS - note there is a key for each command [loggers] keys=root,log [handlers] keys=root_handler,file_handler,console_handler [formatters] keys=form1 ######################################################################## # LOGGERS [logger_root] level=WARNING handlers=root_handler [logger_log] level=DEBUG handlers=file_handler,console_handler propogate=0 qualname=log ######################################################################## # HANDLER CONFIG [handler_root_handler] class=StreamHandler level=ERROR args=(sys.stdout,) [handler_file_handler] class=logging.handlers.RotatingFileHandler level=DEBUG formatter=form1 args=('{0}', 'a', 131072, 10) [handler_console_handler] class=StreamHandler level=INFO args=(sys.stdout,) ######################################################################## # FORMATTER CONFIG [formatter_form1] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s datefmt= '''.format(FileLogger.LOG_FILENAME) conf_file.write(default_conf) conf_file.close fl = FileLogger()