From a82405271ed5fb9ac1a101934536d3335c2d478f Mon Sep 17 00:00:00 2001 From: Tasos Papaioannou Date: Fri, 19 Apr 2024 15:41:05 -0400 Subject: [PATCH] Fix file logging level issue (#289) * Fix file logging level issue. Fixes #223 * Patch awx logging to allow trace logging in all cases. --- broker/helpers.py | 3 ++- broker/logger.py | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/broker/helpers.py b/broker/helpers.py index 1d66dbe3..245ac3fa 100644 --- a/broker/helpers.py +++ b/broker/helpers.py @@ -393,7 +393,8 @@ def fork_broker(): if pid: logger.info(f"Running broker in the background with pid: {pid}") sys.exit(0) - update_log_level(None, None, "silent") + b_log.set_log_level("silent") + b_log.set_file_logging("silent") def handle_keyboardinterrupt(*args): diff --git a/broker/logger.py b/broker/logger.py index fedf2abc..3d5b61a8 100644 --- a/broker/logger.py +++ b/broker/logger.py @@ -57,10 +57,8 @@ def redact_dynaconf(self, data): def patch_awx_for_verbosity(api): - """Patch the awxkit API to log when we're at trace level.""" - client = api.client - awx_log = client.log - + """Patch the awxkit API to enable trace-level logging of API calls to Ansible provider.""" + awx_log = api.client.log awx_log.parent = logzero.logger def patch(cls, name): @@ -116,7 +114,12 @@ def set_file_logging(level=settings.logging.file_level, path="logs/broker.log"): silent = True log_level = LOG_LEVEL.INFO else: - log_level = resolve_log_level(level) + # Allow override of file logging level with --log-level, if the new level is lower than + # settings.logging.file_level. Otherwise, use the value from settings. + old_log_level = resolve_log_level(settings.logging.file_level) + new_log_level = resolve_log_level(level) + log_level = new_log_level if new_log_level < old_log_level else old_log_level + path = BROKER_DIRECTORY.joinpath(path) path.parent.mkdir(parents=True, exist_ok=True) logzero.logfile( @@ -138,8 +141,7 @@ def setup_logzero( ): """Call logzero setup with the given settings.""" urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - if isinstance(level, str) and level.lower() == "trace": - patch_awx_for_verbosity(awxkit.api) + patch_awx_for_verbosity(awxkit.api) set_log_level(level) set_file_logging(file_level, path) if formatter: