From 4e99314238a8d09d93b2da7697c16975491bd69a Mon Sep 17 00:00:00 2001 From: Christian Herdtweck Date: Thu, 14 Dec 2017 11:45:37 +0100 Subject: [PATCH] Handle missing parameters to log string --- src/log_helpers.py | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/log_helpers.py b/src/log_helpers.py index b48cc64..c35ac1d 100644 --- a/src/log_helpers.py +++ b/src/log_helpers.py @@ -294,12 +294,20 @@ class I2nLogger: if isinstance(level, str): level = LEVEL_DICT[level.lower()] if level >= self._level: - self._log.log(level, message.format(*args), **kwargs) + try: + message_formatted = message.format(*args) + except (KeyError, IndexError): + message_formatted = '[LOG ARGS!] ' + message + self._log.log(level, message_formatted, **kwargs) def _log_no_test(self, level, message, *args, **kwargs): """ same as log() but without the isinstance test for internal use""" if level >= self._level: - self._log.log(level, message.format(*args), **kwargs) + try: + message_formatted = message.format(*args) + except (KeyError, IndexError): + message_formatted = '[LOG ARGS!] ' + message + self._log.log(level, message_formatted, **kwargs) def log_count_if_interesting(self, count, level=INFO, counter_name=None): """ Log value of a counter in gradually coarser intervals @@ -427,7 +435,14 @@ def test_line_counter(): log.info('logging with idx {0}', idx) log.log_count_if_interesting(idx) + +def test_error_in_formatting(): + log = get_logger('logger_test') + log.warn('forgot to add argument {} and {1} and {cnf} to format string') + log.warn('wrong number {} of arguments {}', 1) + if __name__ == '__main__': #test_short_level_format() #test_get_logger() - test_line_counter() + #test_line_counter() + test_error_in_formatting() -- 1.7.1