import os import logging class Logger(object): @staticmethod def string_to_loglevel(loglevel): logLevelMap = { "error": logging.ERROR, "warning": logging.WARNING, "info": logging.INFO, "debug": logging.DEBUG, } return logLevelMap.get(loglevel, logging.INFO) @staticmethod def getLogger(mymodule, logpath=None, loglevel="info"): logfile = mymodule + ".log" if logpath is not None: if not os.path.isdir(logpath): os.makedirs(logpath) logfile = logpath + "/" + logfile logger = logging.getLogger(mymodule) if not logger.handlers: #creating file handler fhandler = logging.FileHandler(logfile) # create console handler ch = logging.StreamHandler() fhformatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s') if loglevel=="debug": chformatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s') else: chformatter = logging.Formatter('%(message)s') # add formatter to handler fhandler.setFormatter(fhformatter) #fhandler.setLevel(logging.DEBUG) ch.setFormatter(chformatter) #ch.setLevel(Logger.string_to_loglevel(loglevel)) logger.setLevel(Logger.string_to_loglevel(loglevel)) logger.addHandler(ch) logger.addHandler(fhandler) logger.debug("-" * 75) logger.debug("Starting Log") logger.debug("-" * 75) return logger if __name__ == "__main__": #Logger.getLogger("my module") t1 = Logger.getLogger("my module") t1.info("test1") t2 = Logger.getLogger("my module") t2.info("test2") t1.info("test3")