diff --git a/changelogs/fragments/fix_log_verbosity.yml b/changelogs/fragments/fix_log_verbosity.yml new file mode 100644 index 00000000000..72ccb3a5528 --- /dev/null +++ b/changelogs/fragments/fix_log_verbosity.yml @@ -0,0 +1,2 @@ +bugfixes: + - ensure we have logger before we log when we have increased verbosity. diff --git a/lib/ansible/utils/display.py b/lib/ansible/utils/display.py index ddf59179876..08a59237190 100644 --- a/lib/ansible/utils/display.py +++ b/lib/ansible/utils/display.py @@ -451,7 +451,7 @@ class Display(metaclass=Singleton): def _log(self, msg: str, color: str | None = None, caplevel: int | None = None): - if caplevel is None or self.log_verbosity > caplevel: + if logger and (caplevel is None or self.log_verbosity > caplevel): msg2 = msg.lstrip('\n') lvl = logging.INFO @@ -462,6 +462,7 @@ class Display(metaclass=Singleton): except KeyError: # this should not happen, but JIC raise AnsibleAssertionError('Invalid color supplied to display: %s' % color) + # actually log logger.log(lvl, msg2) diff --git a/test/integration/targets/ansible_log/runme.sh b/test/integration/targets/ansible_log/runme.sh index 84c58c4d9de..5295146b6f1 100755 --- a/test/integration/targets/ansible_log/runme.sh +++ b/test/integration/targets/ansible_log/runme.sh @@ -21,3 +21,6 @@ if [ "$rc" == "0" ]; then false # fail if we found EXEC in stdout fi grep -q EXEC "${ALOG}" + +# Test that setting verbosity with no log won't crash +ANSIBLE_LOG_VERBOSITY=2 ansible-playbook logit.yml