[PATCH] Add a new log level 'lock' for _yum_lock
Brian C. Lane
bcl at redhat.com
Fri Jun 13 22:18:12 UTC 2014
It is useful to log debug output from packaging without the yum_lock
logging. With this change yum_lock logging is only turned on with
inst.loglevel=lock
inst.debug, inst.updates, and inst.loglevel=debug now only turn on debug
logging for packaging.log with no yum_lock output.
---
anaconda | 15 ++++++---------
pyanaconda/anaconda_log.py | 11 ++++++++---
pyanaconda/constants.py | 3 +++
pyanaconda/packaging/yumpayload.py | 9 +++++----
4 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/anaconda b/anaconda
index 1be9eda..513965d 100755
--- a/anaconda
+++ b/anaconda
@@ -379,22 +379,19 @@ def setupEnvironment():
del os.environ["LD_PRELOAD"]
def setupLoggingFromOpts(options):
- want_yum_lock_logs = False
- if options.debug or options.updateSrc:
- # debugging means debug logging
+ if (options.debug or options.updateSrc) and not options.loglevel:
+ # debugging means debug logging if an explicit level hasn't been st
options.loglevel = "debug"
- want_yum_lock_logs = options.debug
if options.loglevel and options.loglevel in anaconda_log.logLevelMap:
- level = anaconda_log.logLevelMap[opts.loglevel]
+ log.info("Switching logging level to %s", options.loglevel)
+ level = anaconda_log.logLevelMap[options.loglevel]
anaconda_log.logger.tty_loglevel = level
anaconda_log.setHandlersLevel(log, level)
storage_log = logging.getLogger("storage")
anaconda_log.setHandlersLevel(storage_log, level)
-
- if options.loglevel != "debug" or want_yum_lock_logs:
- packaging_log = logging.getLogger("packaging")
- anaconda_log.setHandlersLevel(packaging_log, level)
+ packaging_log = logging.getLogger("packaging")
+ anaconda_log.setHandlersLevel(packaging_log, level)
if options.syslog:
anaconda_log.logger.updateRemote(options.syslog)
diff --git a/pyanaconda/anaconda_log.py b/pyanaconda/anaconda_log.py
index 8105835..1a48ea9 100644
--- a/pyanaconda/anaconda_log.py
+++ b/pyanaconda/anaconda_log.py
@@ -30,6 +30,7 @@ import types
import warnings
from pyanaconda.flags import flags
+from pyanaconda.constants import LOGLVL_LOCK
DEFAULT_TTY_LEVEL = logging.INFO
ENTRY_FORMAT = "%(asctime)s,%(msecs)03d %(levelname)s %(name)s: %(message)s"
@@ -49,8 +50,11 @@ ANACONDA_SYSLOG_FACILITY = SysLogHandler.LOG_LOCAL1
from threading import Lock
program_log_lock = Lock()
-logLevelMap = {"debug": logging.DEBUG, "info": logging.INFO,
- "warning": logging.WARNING, "error": logging.ERROR,
+logLevelMap = {"lock": LOGLVL_LOCK,
+ "debug": logging.DEBUG,
+ "info": logging.INFO,
+ "warning": logging.WARNING,
+ "error": logging.ERROR,
"critical": logging.CRITICAL}
# sets autoSetLevel for the given handler
@@ -87,6 +91,7 @@ class AnacondaLog:
logging.addLevelName(logging.WARNING, "WARN")
logging.addLevelName(logging.ERROR, "ERR")
logging.addLevelName(logging.CRITICAL, "CRIT")
+ logging.addLevelName(LOGLVL_LOCK, "LOCK")
# Create the base of the logger hierarchy.
self.anaconda_logger = logging.getLogger("anaconda")
@@ -123,7 +128,7 @@ class AnacondaLog:
# Create the packaging logger.
packaging_logger = logging.getLogger("packaging")
- packaging_logger.setLevel(logging.DEBUG)
+ packaging_logger.setLevel(LOGLVL_LOCK)
self.addFileHandler(PACKAGING_LOG_FILE, packaging_logger,
minLevel=logging.INFO,
autoLevel=True)
diff --git a/pyanaconda/constants.py b/pyanaconda/constants.py
index db786b5..4f9b64a 100644
--- a/pyanaconda/constants.py
+++ b/pyanaconda/constants.py
@@ -166,3 +166,6 @@ TAR_SUFFIX = (".tar", ".tbz", ".tgz", ".txz", ".tar.bz2", "tar.gz", "tar.xz")
CMDLINE_APPEND = ["modprobe.blacklist"]
DEFAULT_AUTOPART_TYPE = AUTOPART_TYPE_LVM
+
+import logging
+LOGLVL_LOCK = logging.DEBUG-1
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index 760fa02..c05d36a 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -63,7 +63,8 @@ except ImportError:
log.error("import of yum failed")
yum = None
-from pyanaconda.constants import BASE_REPO_NAME, DRACUT_ISODIR, INSTALL_TREE, ISO_DIR, MOUNT_DIR
+from pyanaconda.constants import BASE_REPO_NAME, DRACUT_ISODIR, INSTALL_TREE, ISO_DIR, MOUNT_DIR, \
+ LOGLVL_LOCK
from pyanaconda.flags import flags
from pyanaconda import iutil
@@ -101,16 +102,16 @@ class YumLock(object):
frame = inspect.stack()[2]
threadName = threading.currentThread().name
- log.debug("about to acquire _yum_lock for %s at %s:%s (%s)", threadName, frame[1], frame[2], frame[3])
+ log.log(LOGLVL_LOCK, "about to acquire _yum_lock for %s at %s:%s (%s)", threadName, frame[1], frame[2], frame[3])
_private_yum_lock.acquire()
- log.debug("have _yum_lock for %s", threadName)
+ log.log(LOGLVL_LOCK, "have _yum_lock for %s", threadName)
return _private_yum_lock
def __exit__(self, exc_type, exc_val, exc_tb):
_private_yum_lock.release()
if not isFinal:
- log.debug("gave up _yum_lock for %s", threading.currentThread().name)
+ log.log(LOGLVL_LOCK, "gave up _yum_lock for %s", threading.currentThread().name)
def refresh_base_repo(cond_fn=None):
"""
--
1.9.3
More information about the anaconda-patches
mailing list