Show summary log errors regardless of verbosity. Log the "summary:" header with level based on the contained logs.
This commit is contained in:
parent
55ebfdda39
commit
f4a231420f
4 changed files with 23 additions and 15 deletions
4
NEWS
4
NEWS
|
@ -1,3 +1,7 @@
|
||||||
|
1.4.14
|
||||||
|
* Show summary log errors regardless of verbosity level, and log the "summary:" header with a log
|
||||||
|
level based on the contained summary logs.
|
||||||
|
|
||||||
1.4.13
|
1.4.13
|
||||||
* Show full error logs at "--verbosity 0" so you can see command output without upping the
|
* Show full error logs at "--verbosity 0" so you can see command output without upping the
|
||||||
verbosity level.
|
verbosity level.
|
||||||
|
|
|
@ -392,11 +392,9 @@ def make_error_log_records(message, error=None):
|
||||||
except CalledProcessError as error:
|
except CalledProcessError as error:
|
||||||
yield log_record(levelno=logging.CRITICAL, levelname='CRITICAL', msg=message)
|
yield log_record(levelno=logging.CRITICAL, levelname='CRITICAL', msg=message)
|
||||||
if error.output:
|
if error.output:
|
||||||
|
# Suppress these logs for now and save full error output for the log summary at the end.
|
||||||
yield log_record(
|
yield log_record(
|
||||||
levelno=logging.CRITICAL,
|
levelno=logging.CRITICAL, levelname='CRITICAL', msg=error.output, suppress_log=True
|
||||||
levelname='CRITICAL',
|
|
||||||
msg=error.output,
|
|
||||||
suppress_log=bool(logger.getEffectiveLevel() < logging.WARNING),
|
|
||||||
)
|
)
|
||||||
yield log_record(levelno=logging.CRITICAL, levelname='CRITICAL', msg=error)
|
yield log_record(levelno=logging.CRITICAL, levelname='CRITICAL', msg=error)
|
||||||
except (ValueError, OSError) as error:
|
except (ValueError, OSError) as error:
|
||||||
|
@ -543,16 +541,18 @@ def main(): # pragma: no cover
|
||||||
logger.debug('Ensuring legacy configuration is upgraded')
|
logger.debug('Ensuring legacy configuration is upgraded')
|
||||||
convert.guard_configuration_upgraded(LEGACY_CONFIG_PATH, config_filenames)
|
convert.guard_configuration_upgraded(LEGACY_CONFIG_PATH, config_filenames)
|
||||||
|
|
||||||
summary_logs = list(collect_configuration_run_summary_logs(configs, arguments))
|
summary_logs = parse_logs + list(collect_configuration_run_summary_logs(configs, arguments))
|
||||||
|
summary_logs_max_level = max(log.levelno for log in summary_logs)
|
||||||
|
|
||||||
if logger.getEffectiveLevel() < logging.WARNING:
|
for message in ('', 'summary:'):
|
||||||
logger.info('')
|
log_record(
|
||||||
logger.info('summary:')
|
levelno=summary_logs_max_level,
|
||||||
[
|
levelname=logging.getLevelName(summary_logs_max_level),
|
||||||
|
msg=message,
|
||||||
|
)
|
||||||
|
|
||||||
|
for log in summary_logs:
|
||||||
logger.handle(log)
|
logger.handle(log)
|
||||||
for log in parse_logs + summary_logs
|
|
||||||
if log.levelno >= logger.getEffectiveLevel()
|
|
||||||
]
|
|
||||||
|
|
||||||
if any(log.levelno == logging.CRITICAL for log in summary_logs):
|
if summary_logs_max_level >= logging.CRITICAL:
|
||||||
exit_with_help_link()
|
exit_with_help_link()
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -1,6 +1,6 @@
|
||||||
from setuptools import find_packages, setup
|
from setuptools import find_packages, setup
|
||||||
|
|
||||||
VERSION = '1.4.13'
|
VERSION = '1.4.14'
|
||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
|
|
|
@ -119,6 +119,10 @@ def test_log_record_does_not_raise():
|
||||||
module.log_record(levelno=1, foo='bar', baz='quux')
|
module.log_record(levelno=1, foo='bar', baz='quux')
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_record_with_suppress_does_not_raise():
|
||||||
|
module.log_record(levelno=1, foo='bar', baz='quux', suppress_log=True)
|
||||||
|
|
||||||
|
|
||||||
def test_make_error_log_records_generates_output_logs_for_message_only():
|
def test_make_error_log_records_generates_output_logs_for_message_only():
|
||||||
flexmock(module).should_receive('log_record').replace_with(dict)
|
flexmock(module).should_receive('log_record').replace_with(dict)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue