Это решение, которое я придумала, но меня беспокоит производительность, учитывая ее высокую рекурсивность и ненужную перестройку объектов list
и dict
.
def _convert_dates(obj):
if isinstance(obj, datetime.date):
# all datetimes are also dates
return str(obj)
elif isinstance(obj, dict):
# Assume dates won't be keys
return {k: _convert_dates(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [_convert_dates(v) for v in obj]
return obj
def dates_to_str_filter(_, __, event):
return _convert_dates(event)
Затем включите dates_to_str_filter
в processors
для вызова structlog.configure
.