summaryrefslogtreecommitdiffstats
path: root/anaconda_log.py
diff options
context:
space:
mode:
authorAles Kozumplik <akozumpl@redhat.com>2010-01-04 15:15:25 +0100
committerAles Kozumplik <akozumpl@redhat.com>2010-01-08 11:42:41 +0100
commitbcdd19e8b8cfa7184ed402a95d0d11e8fe224cf7 (patch)
tree6b7f1073b2448809771a58293c8da6aba715bbce /anaconda_log.py
parent3de94f667bf241e01017094e04bb7784f6f39097 (diff)
downloadanaconda-bcdd19e8b8cfa7184ed402a95d0d11e8fe224cf7.tar.gz
anaconda-bcdd19e8b8cfa7184ed402a95d0d11e8fe224cf7.tar.xz
anaconda-bcdd19e8b8cfa7184ed402a95d0d11e8fe224cf7.zip
Remove LoggerClass but maintain loglevel= functionality
Diffstat (limited to 'anaconda_log.py')
-rw-r--r--anaconda_log.py31
1 files changed, 12 insertions, 19 deletions
diff --git a/anaconda_log.py b/anaconda_log.py
index 3be4e6a00..a6363f617 100644
--- a/anaconda_log.py
+++ b/anaconda_log.py
@@ -38,20 +38,14 @@ logLevelMap = {"debug": logging.DEBUG, "info": logging.INFO,
"warning": logging.WARNING, "error": logging.ERROR,
"critical": logging.CRITICAL}
-# Base class for logger instances. This is what will be created any time
-# someone calls logging.getLogger("whatever"). We need this class to
-# provide the setHandlersLevel function.
-class LoggerClass(logging.Logger):
- # Set the level of all handlers attached to a logger, except those
- # with the autoSetLevel=False attribute.
- def setHandlersLevel(self, level):
- map(lambda hdlr: hdlr.setLevel(level),
- filter (lambda hdlr: hasattr(hdlr, "autoSetLevel") and hdlr.autoSetLevel, self.handlers))
+# sets autoSetLevel for the given handler
+def autoSetLevel(handler, value):
+ handler.autoSetLevel = value
- # Specialized addHandler that also adds the autoSetLevel attribute.
- def addHandler(self, hdlr, autoSetLevel=True):
- setattr(hdlr, "autoSetLevel", autoSetLevel)
- logging.Logger.addHandler(self, hdlr)
+# all handlers of given logger with autoSetLevel == True are set to level
+def setHandlersLevel(logger, level):
+ map(lambda hdlr: hdlr.setLevel(level),
+ filter (lambda hdlr: hasattr(hdlr, "autoSetLevel") and hdlr.autoSetLevel, logger.handlers))
class AnacondaLog:
def __init__ (self, minLevel=DEFAULT_LEVEL):
@@ -59,13 +53,13 @@ class AnacondaLog:
self.logger = logging.getLogger("anaconda")
self.logger.setLevel(logging.DEBUG)
self.addFileHandler(MAIN_LOG_FILE, self.logger,
- autoSetLevel=False, minLevel=logging.DEBUG)
+ autoLevel=False, minLevel=logging.DEBUG)
# External program output log
program_logger = logging.getLogger("program")
program_logger.setLevel(logging.DEBUG)
self.addFileHandler(PROGRAM_LOG_FILE, program_logger,
- autoSetLevel=False, minLevel=logging.DEBUG)
+ autoLevel=False, minLevel=logging.DEBUG)
# Create a second logger for just the stuff we want to dup on
# stdout. Anything written here will also get passed up to the
@@ -81,7 +75,7 @@ class AnacondaLog:
# Add a simple handler - file or stream, depending on what we're given.
def addFileHandler (self, file, addToLogger, minLevel=DEFAULT_LEVEL,
fmtStr=DEFAULT_ENTRY_FORMAT,
- autoSetLevel=True):
+ autoLevel=True):
if isinstance(file, types.StringTypes):
logfileHandler = logging.FileHandler(file)
else:
@@ -89,7 +83,8 @@ class AnacondaLog:
logfileHandler.setLevel(minLevel)
logfileHandler.setFormatter(logging.Formatter(fmtStr, DEFAULT_DATE_FORMAT))
- addToLogger.addHandler(logfileHandler, autoSetLevel=autoSetLevel)
+ autoSetLevel(logfileHandler, autoLevel)
+ addToLogger.addHandler(logfileHandler)
# Add another logger to the hierarchy. For best results, make sure
# name falls under anaconda in the tree.
@@ -106,6 +101,4 @@ class AnacondaLog:
syslogHandler.setFormatter(fmt)
logger.addHandler(syslogHandler)
-# Set base class for logger instances.
-logging.setLoggerClass(LoggerClass)
logger = AnacondaLog()