#! /usr/bin/python import logging, logging.handlers import os.path as path class Logger(): '''Logger class that prints its messages and keeps them also inside a logfile''' def __init__(self,logLevel=logging.DEBUG, logfile="var/log/linspector.log", logfileLevel=logging.DEBUG): ''' initializes a new Logger object. params: logLevel the LoggingLevel from the console output (DEBUG default) logfile the file where to log. Logs are rotated by default. logfileLevel the LoggingLevel for the file Logger. (DEBUG default) ''' logfile=path.expanduser(logfile) if not path.exists(path.dirname(logfile)): os.makedirs(path.dirname(logfile)) self.log = logging.getLogger("LinspectorLogger") self.log.setLevel(logging.DEBUG) consoleHandler = logging.StreamHandler() consoleHandler.setLevel(logLevel) fileHandler = logging.handlers.RotatingFileHandler(logfile, maxBytes=2048, backupCount=4) fileHandler.setLevel(logfileLevel) consoleFormatter = logging.Formatter('[%(levelname)s]: %(message)s') fileFormatter = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s') consoleHandler.setFormatter(consoleFormatter) fileHandler.setFormatter(fileFormatter) self.log.addHandler(consoleHandler) self.log.addHandler(fileHandler) def d(self, message): self.log.debug(message) def i(self, message): self.log.info(message) def w(self, message, category=None): self.log.warn(message, category) def e(self, message): self.log.error(message) def c(self, message): self.log.critical(message) self.log.critical(message) LOGGER=Logger() def logVerbose(message, verbose=True): LOGGER.d(message) def logNotice(message, verbose=True): LOGGER.i(message) def logWarning(message): LOGGER.w(message) def logWarningConfig(file="file", missing="missing"): logWarning("in " + file + ": The " + missing + " is not defined") def writeLogToFile(logfile, message): pass #always written to file...