Skip to content

Instantly share code, notes, and snippets.

@denarced
Created December 16, 2023 17:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save denarced/3ade7d3eccd520c01fc8ba7de0b81ba5 to your computer and use it in GitHub Desktop.
Save denarced/3ade7d3eccd520c01fc8ba7de0b81ba5 to your computer and use it in GitHub Desktop.
Python logging handler to log dicts as JSON
import json
import logging
class JsonDict(dict):
def __str__(self):
try:
return json.dumps(self, ensure_ascii=False, sort_keys=True)
except:
return super().__str__()
class JsonHandler(logging.StreamHandler):
def format(self, record):
if isinstance(record.args, tuple):
record.args = tuple([self._convert_dict(e) for e in record.args])
else:
record.args = self._convert_dict(record.args)
return super().format(record)
@staticmethod
def _convert_dict(value):
return JsonDict(value) if isinstance(value, dict) else value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment