From df997922e9501ec5245f415ee980d35e3576336d Mon Sep 17 00:00:00 2001 From: Stanislav Laznicka Date: Tue, 10 Jul 2018 15:56:00 +0200 Subject: [PATCH] lib389: don't set up logging at module scope lib389 was calling `logging.basicConfig()` at several places at module scope level. This was causing imports from these modules to add an unwanted handler to the root logger of the python's standard logging module. Fix this by setting up logging only in the scripts that are using lib389. https://pagure.io/389-ds-base/issue/49844 --- src/lib389/cli/dsconf | 4 ++-- src/lib389/cli/dscreate | 4 ++-- src/lib389/cli/dsctl | 4 ++-- src/lib389/cli/dsidm | 7 ++----- src/lib389/lib389/_entry.py | 2 -- src/lib389/lib389/cli_base/__init__.py | 27 +++++++------------------- src/lib389/lib389/replica.py | 3 ++- src/lib389/lib389/tests/config.py | 2 +- src/lib389/lib389/tools.py | 1 - src/lib389/lib389/utils.py | 1 - 10 files changed, 18 insertions(+), 37 deletions(-) diff --git a/src/lib389/cli/dsconf b/src/lib389/cli/dsconf index eb06fe04dba1f44fbe0a1953908c08d2e94009b9..5b56b7ac49b21a14d19d0b7a868a433e33d45707 100755 --- a/src/lib389/cli/dsconf +++ b/src/lib389/cli/dsconf @@ -38,7 +38,7 @@ from lib389.cli_base import disconnect_instance, connect_instance from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat -from lib389.cli_base import reset_get_logger +from lib389.cli_base import setup_script_logger parser = argparse.ArgumentParser(allow_abbrev=True) parser.add_argument('instance', @@ -93,7 +93,7 @@ if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) args = parser.parse_args() - log = reset_get_logger('dsconf', args.verbose) + log = setup_script_logger('dsconf', args.verbose) log.debug("The 389 Directory Server Configuration Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dscreate b/src/lib389/cli/dscreate index aa0d2b3f7905e0bdaba6fb688534985b5d6a174e..17708d05379037fd01510238369548f4fcc7415f 100755 --- a/src/lib389/cli/dscreate +++ b/src/lib389/cli/dscreate @@ -17,7 +17,7 @@ import signal from lib389 import DirSrv from lib389.cli_ctl import instance as cli_instance -from lib389.cli_base import reset_get_logger +from lib389.cli_base import setup_script_logger parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', @@ -49,7 +49,7 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': args = parser.parse_args() - log = reset_get_logger("dscreate", args.verbose) + log = setup_script_logger("dscreate", args.verbose) log.debug("The 389 Directory Server Creation Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dsctl b/src/lib389/cli/dsctl index 1149da853acd4eb0b8d0aab5e4c96102fb408e27..f5e8943dc3f6889639f4d5791ea50c4a8a9c4d01 100755 --- a/src/lib389/cli/dsctl +++ b/src/lib389/cli/dsctl @@ -22,7 +22,7 @@ from lib389.cli_base import _get_arg from lib389 import DirSrv from lib389.cli_ctl import instance as cli_instance from lib389.cli_ctl import dbtasks as cli_dbtasks -from lib389.cli_base import disconnect_instance, reset_get_logger +from lib389.cli_base import disconnect_instance, setup_script_logger parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', @@ -54,7 +54,7 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': args = parser.parse_args() - log = reset_get_logger('dsctl', args.verbose) + log = setup_script_logger('dsctl', args.verbose) log.debug("The 389 Directory Server Administration Tool") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/cli/dsidm b/src/lib389/cli/dsidm index ee23e8363749afa718c261042b6902c7698602af..a856a7685017fad42fa33cb93fb76e3823db8724 100755 --- a/src/lib389/cli/dsidm +++ b/src/lib389/cli/dsidm @@ -27,7 +27,7 @@ from lib389.cli_idm import group as cli_group from lib389.cli_idm import posixgroup as cli_posixgroup from lib389.cli_idm import user as cli_user -from lib389.cli_base import connect_instance, disconnect_instance, reset_get_logger +from lib389.cli_base import connect_instance, disconnect_instance, setup_script_logger from lib389.cli_base.dsrc import dsrc_to_ldap, dsrc_arg_concat @@ -78,12 +78,9 @@ signal.signal(signal.SIGINT, signal_handler) if __name__ == '__main__': defbase = ldap.get_option(ldap.OPT_DEFBASE) - - - args = parser.parse_args() - log = reset_get_logger('dsidm', args.verbose) + log = setup_script_logger('dsidm', args.verbose) log.debug("The 389 Directory Server Identity Manager") # Leave this comment here: UofA let me take this code with me provided diff --git a/src/lib389/lib389/_entry.py b/src/lib389/lib389/_entry.py index 8a9e36bcf74856e103031189c5e36f61eeaf893c..fb72fcab0be41fc217d1f4e3a0cf39ac6ac4ad54 100644 --- a/src/lib389/lib389/_entry.py +++ b/src/lib389/lib389/_entry.py @@ -21,10 +21,8 @@ from lib389.utils import ensure_str, ensure_bytes, ensure_list_bytes MAJOR, MINOR, _, _, _ = sys.version_info -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) - class FormatDict(cidict): def __getitem__(self, name): if name in self: diff --git a/src/lib389/lib389/cli_base/__init__.py b/src/lib389/lib389/cli_base/__init__.py index d2222d3ae32957c94e7ce966fe1fc93c892d500f..06224a0b4f1fc04273d819330b84b3f1ba5bd683 100644 --- a/src/lib389/lib389/cli_base/__init__.py +++ b/src/lib389/lib389/cli_base/__init__.py @@ -289,18 +289,8 @@ class FakeArgs(object): def __len__(self): return len(self.__dict__.keys()) -log_simple_handler = logging.StreamHandler() -log_simple_handler.setFormatter( - logging.Formatter('%(message)s') -) -log_verbose_handler = logging.StreamHandler() -log_verbose_handler.setFormatter( - logging.Formatter('%(levelname)s: %(message)s') -) - - -def reset_get_logger(name, verbose=False): +def setup_script_logger(name, verbose=False): """Reset the python logging system for STDOUT, and attach a new console logger with cli expected formatting. @@ -311,21 +301,18 @@ def reset_get_logger(name, verbose=False): :return: logging.logger """ root = logging.getLogger() - if root.handlers: - for handler in root.handlers: - root.removeHandler(handler) - - if verbose: - root.addHandler(log_verbose_handler) - else: - root.addHandler(log_simple_handler) - log = logging.getLogger(name) + log_handler = logging.StreamHandler() if verbose: log.setLevel(logging.DEBUG) + log_format = '%(levelname)s: %(message)s' else: log.setLevel(logging.INFO) + log_format = '%(message)s' + + log_handler.setFormatter(logging.Formatter(log_format)) + root.addHandler(log_handler) return log diff --git a/src/lib389/lib389/replica.py b/src/lib389/lib389/replica.py index bf09c3d86dc94f9f37faf43676ff60e7e1cedd20..cde31093776bafeb8e8c47e8e27616fd1ed8541d 100644 --- a/src/lib389/lib389/replica.py +++ b/src/lib389/lib389/replica.py @@ -502,7 +502,8 @@ class ReplicaLegacy(object): # # First role and replicaID - if (role != ReplicaRole.MASTER and + if ( + role != ReplicaRole.MASTER and role != ReplicaRole.HUB and role != ReplicaRole.CONSUMER ): diff --git a/src/lib389/lib389/tests/config.py b/src/lib389/lib389/tests/config.py index 3b9a472aeb9fa1cee66d83b7e28188238f0f6d47..860fcb4bd9a28cf6748cfc528262e178622a86b5 100644 --- a/src/lib389/lib389/tests/config.py +++ b/src/lib389/lib389/tests/config.py @@ -1,7 +1,7 @@ import logging import six + logging.basicConfig(level=logging.DEBUG) -log = logging.getLogger(__name__) DN_RMANAGER = 'uid=rmanager,cn=config' diff --git a/src/lib389/lib389/tools.py b/src/lib389/lib389/tools.py index f0f4b1c158b9164995f591dd611bf654292147b4..cabdb0f3b81cd0e211ac13dd527480144d02674c 100644 --- a/src/lib389/lib389/tools.py +++ b/src/lib389/lib389/tools.py @@ -85,7 +85,6 @@ except ImportError: _ds_paths = Paths() -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) # Private constants diff --git a/src/lib389/lib389/utils.py b/src/lib389/lib389/utils.py index 94fa93d20ef7a5a37f2f2d45d62731c6f6701f37..1fb2ee63614e19660082f1d45c559afb35f3aa3c 100644 --- a/src/lib389/lib389/utils.py +++ b/src/lib389/lib389/utils.py @@ -53,7 +53,6 @@ from lib389.properties import ( MAJOR, MINOR, _, _, _ = sys.version_info -logging.basicConfig(level=logging.DEBUG) log = logging.getLogger(__name__) # # Decorator -- 2.17.1