From 856c603c611929f393448b961e25840ef91149b2 Mon Sep 17 00:00:00 2001 From: RafTim Date: Mon, 20 May 2013 05:58:28 +0300 Subject: [PATCH] Update logger.py native python loggin ;) --- 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..0481f99 100644 --- a/lib/core/logger.py +++ b/lib/core/logger.py @@ -1,22 +1,74 @@ -from datetime import datetime +#! /usr/bin/python -DEBUG = "[debug]" -NOTICE = "[notice]" -WARNING = "[warning]" +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): - 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...