diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2adcc5d..e18addc 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,4 +14,4 @@ on: jobs: call_ci: - uses: EffectiveRange/ci-workflows/.github/workflows/python-ci.yaml@v3 + uses: EffectiveRange/ci-workflows/.github/workflows/python-ci.yaml@v5 diff --git a/context_logger/filter.py b/context_logger/filter.py index f53dd4f..e73fc3c 100644 --- a/context_logger/filter.py +++ b/context_logger/filter.py @@ -15,16 +15,19 @@ def __init__(self, application_name: str, message_field: str): self._message_field = message_field def filter(self, record: LogRecord) -> bool: - if not isinstance(record.msg, dict): - record.msg = {self._message_field: record.msg % record.args} - record.args = () - - record.msg['hostname'] = socket.gethostname() - record.msg['application'] = self._application_name - record.msg['app_version'] = self._get_application_version() - - if 'process_name' in record.msg: - record.msg['process_name'] = record.processName + try: + if isinstance(record.msg, str): + record.msg = {self._message_field: record.msg % record.args if record.args else record.msg} + record.args = () + + record.msg['hostname'] = socket.gethostname() + record.msg['application'] = self._application_name + record.msg['app_version'] = self._get_application_version() + + if 'process_name' in record.msg: + record.msg['process_name'] = record.processName + except Exception as exception: + print('Failed to handle log record:', exception) return True diff --git a/tests/loggerTest.py b/tests/loggerTest.py index 039bd0d..ec68696 100644 --- a/tests/loggerTest.py +++ b/tests/loggerTest.py @@ -62,6 +62,7 @@ def test_file_logging(self): # When log.info('This is a simple message') stdlib_log.info('This is a %s message', 'simple') + stdlib_log.info('This is a %s message', ) log.error('This is an error message', error_message='Something terrible happened', error_code=1234) stdlib_log.error('This is an error message') @@ -74,6 +75,9 @@ def test_file_logging(self): log_entry = json.loads(log_file.readline()) assert_simple_message(self, log_entry) + log_entry = json.loads(log_file.readline()) + self.assertEqual('This is a %s message', log_entry.get('message')) + log_entry = json.loads(log_file.readline()) self.assertEqual('This is an error message', log_entry.get('message')) self.assertEqual('Something terrible happened', log_entry.get('error_message'))