summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2014-05-20 08:51:17 +0200
committerMichal Minar <miminar@redhat.com>2014-05-22 10:00:05 +0200
commit85d895d42f6cc651a5ad3969ee4a6e82ffddd03c (patch)
treeff5e27a1223c72754dfd2180f3b92c4c315dc498
parentecf69a1b59c0e26d02ddc1bce881b23760aa5852 (diff)
downloadopenlmi-providers-85d895d42f6cc651a5ad3969ee4a6e82ffddd03c.tar.gz
openlmi-providers-85d895d42f6cc651a5ad3969ee4a6e82ffddd03c.tar.xz
openlmi-providers-85d895d42f6cc651a5ad3969ee4a6e82ffddd03c.zip
software: proper logging setup for python 2.6
Properly configure logging of YumWorker process under older python.
-rw-r--r--src/software/lmi/software/yumdb/process.py2
-rw-r--r--src/software/lmi/software/yumdb/util.py105
2 files changed, 48 insertions, 59 deletions
diff --git a/src/software/lmi/software/yumdb/process.py b/src/software/lmi/software/yumdb/process.py
index 3ad7cdb..21d6e7e 100644
--- a/src/software/lmi/software/yumdb/process.py
+++ b/src/software/lmi/software/yumdb/process.py
@@ -266,7 +266,7 @@ class YumWorker(Process):
"""
Release the yum base object to safe memory.
"""
- LOG.info("freing database")
+ LOG.info("freeing database")
self._pkg_cache.clear()
self._yum_base = None
self._state = YumWorker.STATE_IDLE
diff --git a/src/software/lmi/software/yumdb/util.py b/src/software/lmi/software/yumdb/util.py
index b3961fb..58ede98 100644
--- a/src/software/lmi/software/yumdb/util.py
+++ b/src/software/lmi/software/yumdb/util.py
@@ -20,7 +20,7 @@
#
"""
-Common utilities meant to be used only be ``yumdb`` subpackage.
+Common utilities meant to be used only by ``yumdb`` subpackage.
"""
import logging
@@ -29,51 +29,52 @@ import yum
from lmi.providers import cmpi_logging
from lmi.software.util import Configuration
-DEBUG_LOGGING_CONFIG = {
- "version" : 1,
- 'disable_existing_loggers' : True,
- "formatters": {
- # this is a message format for logging function/method calls
- # it's manually set up in YumWorker's init method
- "default": {
- "()": "lmi.providers.cmpi_logging.DispatchingFormatter",
- "formatters" : {
- "lmi.providers.cmpi_logging.trace_function_or_method":
+def disable_existing_loggers():
+ """
+ Disable all existing loggers and remove logging handlers.
+ """
+ for logger in logging.root.manager.loggerDict.values():
+ logger.disabled = 1
+ logger.handlers = []
+
+def disable_logging():
+ """
+ Send everything to ``/dev/null``.
+ """
+ disable_existing_loggers()
+ handler = logging.FileHandler('/dev/null')
+ handler.setLevel(logging.CRITICAL)
+ root = logging.getLogger('root')
+ root.disabled = 0
+ root.addHandler(handler)
+ root.setLevel(logging.CRITICAL)
+
+def setup_logging_to_file(output_file, level=logging.DEBUG):
+ """
+ Log everything to file.
+
+ :param str output_file: Path to a desired log file.
+ :param int level: Lowest level of logging messages to handle.
+ """
+ disable_existing_loggers()
+ formatter = cmpi_logging.DispatchingFormatter(
+ formatters={
+ "lmi.providers.cmpi_logging.trace_function_or_method":
"%(asctime)s %(levelname)s:%(message)s"
},
- "default" : "%(asctime)s %(levelname)s:%(module)s:"
- "%(funcName)s:%(lineno)d - %(message)s"
- },
- },
- "handlers": {
- "file" : {
- "class" : "logging.FileHandler",
- "filename" : "/var/tmp/YumWorker.log",
- "level" : "DEBUG",
- "formatter": "default",
- },
- },
- "root": {
- "level": "DEBUG",
- "handlers" : ["file"]
- },
-}
-
-DISABLED_LOGGING_CONFIG = {
- 'version' : 1,
- 'disable_existing_loggers' : True,
- 'handlers': {
- 'null' : {
- 'class': 'logging.FileHandler',
- 'level': 'CRITICAL',
- 'filename': '/dev/null'
- }
- },
- 'root' : {
- 'level': 'CRITICAL',
- 'handlers' : ['null'],
- }
-}
+ default="%(asctime)s %(levelname)s:%(module)s:"
+ "%(funcName)s:%(lineno)d - %(message)s")
+ handler = logging.FileHandler(output_file)
+ handler.setLevel(level)
+ handler.setFormatter(formatter)
+ root = logging.getLogger()
+ root.setLevel(level)
+ root.addHandler(handler)
+ # re-enable function tracing logger which has been disabled by
+ # disable_existing_loggers() call
+ logger = logging.getLogger(
+ cmpi_logging.__name__ + '.trace_function_or_method')
+ logger.disabled = 0
def setup_logging():
"""
@@ -96,26 +97,14 @@ def setup_logging():
out = config.get_safe('YumWorkerLog', 'OutputFile')
if out is not None:
try:
- defaults = DEBUG_LOGGING_CONFIG.copy()
- defaults["handlers"]["file"]["filename"] = out
level = config.get_safe('YumWorkerLog', 'Level')
level = cmpi_logging.LOGGING_LEVELS[level.lower()]
- defaults["handlers"]["file"]["level"] = level
- defaults["root"]["level"] = level
- logging.config.dictConfig(defaults)
+ setup_logging_to_file(out, level)
logging_setup = True
- # re-enable function tracing logger which has been disabled by
- # dictConfig() call
- logging.getLogger(cmpi_logging.__name__
- + '.trace_function_or_method').disabled = False
except Exception:
pass
if logging_setup is False:
- # disable logging completely
-
- # python 2.6 doesn't have dictConfig, don't fail on it
- if hasattr(logging.config, 'dictConfig'):
- logging.config.dictConfig(DISABLED_LOGGING_CONFIG)
+ disable_logging()
def is_pkg_installed(pkg, rpmdb):
"""