summaryrefslogtreecommitdiffstats
path: root/ipalib/plugable.py
diff options
context:
space:
mode:
authorJohn Dennis <jdennis@redhat.com>2011-11-15 14:39:31 -0500
committerMartin Kosek <mkosek@redhat.com>2011-11-23 09:36:18 +0100
commit56401c1abe7d4c78650acfcd9bbe8c8edc1dac57 (patch)
treea759f9fb51d4e2e110c55dbecc45f436386ee30f /ipalib/plugable.py
parent730f1228a91ec9c6e575181807da2ab994a38071 (diff)
downloadfreeipa-56401c1abe7d4c78650acfcd9bbe8c8edc1dac57.tar.gz
freeipa-56401c1abe7d4c78650acfcd9bbe8c8edc1dac57.tar.xz
freeipa-56401c1abe7d4c78650acfcd9bbe8c8edc1dac57.zip
ticket 2022 - modify codebase to utilize IPALogManager, obsoletes logging
change default_logger_level to debug in configure_standard_logging add new ipa_log_manager module, move log_mgr there, also export root_logger from log_mgr. change all log_manager imports to ipa_log_manager and change log_manager.root_logger to root_logger. add missing import for parse_log_level()
Diffstat (limited to 'ipalib/plugable.py')
-rw-r--r--ipalib/plugable.py66
1 files changed, 29 insertions, 37 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index a76f884d5..d8b07c1e8 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -29,7 +29,6 @@ import re
import sys
import inspect
import threading
-import logging
import os
from os import path
import subprocess
@@ -40,7 +39,8 @@ import util
import text
from text import _
from base import ReadOnly, NameSpace, lock, islocked, check_name
-from constants import DEFAULT_CONFIG, FORMAT_STDERR, FORMAT_FILE
+from constants import DEFAULT_CONFIG
+from ipapython.ipa_log_manager import *
# FIXME: Updated constants.TYPE_ERROR to use this clearer format from wehjit:
TYPE_ERROR = '%s: need a %r; got a %r: %r'
@@ -193,14 +193,7 @@ class Plugin(ReadOnly):
self.summary = '<%s>' % self.fullname
else:
self.summary = unicode(self.doc).split('\n\n', 1)[0].strip()
- log = logging.getLogger(self.fullname)
- for name in ('debug', 'info', 'warning', 'error', 'critical', 'exception'):
- if hasattr(self, name):
- raise StandardError(
- '%s.%s attribute (%r) conflicts with Plugin logger' % (
- self.name, name, getattr(self, name))
- )
- setattr(self, name, getattr(log, name))
+ log_mgr.get_logger(self, True)
if self.label is None:
self.label = text.FixMe(self.name + '.label')
if not isinstance(self.label, text.LazyText):
@@ -307,8 +300,7 @@ class Plugin(ReadOnly):
for name in api:
assert not hasattr(self, name)
setattr(self, name, api[name])
- # FIXME: the 'log' attribute is depreciated. See Plugin.__init__()
- for name in ('env', 'context', 'log'):
+ for name in ('env', 'context'):
if hasattr(api, name):
assert not hasattr(self, name)
setattr(self, name, getattr(api, name))
@@ -469,34 +461,32 @@ class API(DictProxy):
self.__doing('bootstrap')
self.env._bootstrap(**overrides)
self.env._finalize_core(**dict(DEFAULT_CONFIG))
- log = logging.getLogger()
+ object.__setattr__(self, 'log_mgr', log_mgr)
+ log = log_mgr.root_logger
object.__setattr__(self, 'log', log)
-
# If logging has already been configured somewhere else (like in the
# installer), don't add handlers or change levels:
- if len(log.handlers) > 0 or self.env.validate_api:
+ if log_mgr.configure_state != 'default' or self.env.validate_api:
return
- if self.env.debug:
- log.setLevel(logging.DEBUG)
- else:
- log.setLevel(logging.INFO)
-
+ log_mgr.configure_from_env(self.env, configure_state='api')
# Add stderr handler:
- stderr = logging.StreamHandler()
+ level = 'info'
if self.env.debug:
- stderr.setLevel(logging.DEBUG)
+ level = 'debug'
else:
if self.env.context == 'cli':
if self.env.verbose > 0:
- stderr.setLevel(logging.INFO)
+ level = 'info'
else:
- stderr.setLevel(logging.WARNING)
- else:
- stderr.setLevel(logging.INFO)
- stderr.setFormatter(util.LogFormatter(FORMAT_STDERR))
- log.addHandler(stderr)
-
+ level = 'warning'
+
+ if log_mgr.handlers.has_key('console'):
+ log_mgr.remove_handler('console')
+ log_mgr.create_log_handlers([dict(name='console',
+ stream=sys.stderr,
+ level=level,
+ format=LOGGING_FORMAT_STDERR)])
# Add file handler:
if self.env.mode in ('dummy', 'unit_test'):
return # But not if in unit-test mode
@@ -509,17 +499,19 @@ class API(DictProxy):
except OSError:
log.error('Could not create log_dir %r', log_dir)
return
+
+
+ level = 'info'
+ if self.env.debug:
+ level = 'debug'
try:
- handler = logging.FileHandler(self.env.log)
+ log_mgr.create_log_handlers([dict(name='file',
+ filename=self.env.log,
+ level=level,
+ format=LOGGING_FORMAT_FILE)])
except IOError, e:
- log.error('Cannot open log file %r: %s', self.env.log, e.strerror)
+ log.error('Cannot open log file %r: %s', self.env.log, e)
return
- handler.setFormatter(util.LogFormatter(FORMAT_FILE))
- if self.env.debug:
- handler.setLevel(logging.DEBUG)
- else:
- handler.setLevel(logging.INFO)
- log.addHandler(handler)
def build_global_parser(self, parser=None, context=None):
"""