diff --git a/qutebrowser/misc/utilcmds.py b/qutebrowser/misc/utilcmds.py index 1171f5a3d..4de20f767 100644 --- a/qutebrowser/misc/utilcmds.py +++ b/qutebrowser/misc/utilcmds.py @@ -259,6 +259,7 @@ def debug_log_level(level: str): Args: level: The log level to set. """ + log.change_console_formatter(log.LOG_LEVELS[level.upper()]) log.console_handler.setLevel(log.LOG_LEVELS[level.upper()]) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 41f6a8897..4f755dd21 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -250,6 +250,18 @@ def _init_handlers(level, color, force_color, json_logging, ram_capacity): return console_handler, ram_handler +def get_console_format(level): + """Get format. + + Args: + level: The numeric logging level. + + Return: + Format of the requested level. + """ + return EXTENDED_FMT if level <= logging.DEBUG else SIMPLE_FMT + + def _init_formatters(level, color, force_color, json_logging): """Init log formatters. @@ -264,7 +276,7 @@ def _init_formatters(level, color, force_color, json_logging): console_formatter/ram_formatter: logging.Formatter instances. use_colorama: Whether to use colorama. """ - console_fmt = EXTENDED_FMT if level <= logging.DEBUG else SIMPLE_FMT + console_fmt = get_console_format(level) ram_formatter = ColoredFormatter(EXTENDED_FMT, DATEFMT, '{', use_colors=False) html_formatter = HTMLFormatter(EXTENDED_FMT_HTML, DATEFMT, @@ -291,6 +303,23 @@ def _init_formatters(level, color, force_color, json_logging): return console_formatter, ram_formatter, html_formatter, use_colorama +def change_console_formatter(level): + """Change console formatter based on level. + + Args: + level: The numeric logging level + """ + if not isinstance(console_handler.formatter, ColoredFormatter): + # JSON Formatter being used for end2end tests + pass + + use_colors = console_handler.formatter.use_colors + console_fmt = get_console_format(level) + console_formatter = ColoredFormatter(console_fmt, DATEFMT, '{', + use_colors=use_colors) + console_handler.setFormatter(console_formatter) + + def qt_message_handler(msg_type, context, msg): """Qt message handler to redirect qWarning etc. to the logging system. @@ -539,10 +568,10 @@ class ColoredFormatter(logging.Formatter): def __init__(self, fmt, datefmt, style, *, use_colors): super().__init__(fmt, datefmt, style) - self._use_colors = use_colors + self.use_colors = use_colors def format(self, record): - if self._use_colors: + if self.use_colors: color_dict = dict(COLOR_ESCAPES) color_dict['reset'] = RESET_ESCAPE log_color = LOG_COLORS[record.levelname]