From 0d58dee155593888532eae1456e616b85f7e83d8 Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Tue, 21 May 2013 02:45:03 +0200 Subject: [PATCH] new logger from ruff --- lib/core/logger.py | 85 +++++++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 23 deletions(-) diff --git a/lib/core/logger.py b/lib/core/logger.py index 5baa3d1..aa442fd 100644 --- a/lib/core/logger.py +++ b/lib/core/logger.py @@ -1,22 +1,74 @@ -from datetime import datetime +import logging +import logging.handlers +import os +import os.path as path -DEBUG = "[debug]" -NOTICE = "[notice]" -WARNING = "[warning]" + +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): - if verbose: - print DEBUG + " " + str(message) + LOGGER.d(message) def logNotice(message, verbose=True): - if verbose: - print NOTICE + " " + str(message) + LOGGER.i(message) def logWarning(message): - print WARNING + " " + message + LOGGER.w(message) def logWarningConfig(file="file", missing="missing"): @@ -24,17 +76,4 @@ def logWarningConfig(file="file", missing="missing"): def writeLogToFile(logfile, message): - f = open(logfile, 'a') - f.write("[" + str(datetime.now()) + "] " + message + '\n') - f.close() - - -class Logger: - def __init__(self, logfile="/dev/null"): - self.logfile = logfile - - def logSomething(message, verbose=False): - f = open(self.logfile, 'a') - f.write("[" + str(datetime.now()) + "] " + message + '\n') - f.close() - + pass #always written to file...