4

Structlog 似乎在创建日志消息时使用,这__repr__会导致对象看起来更可取。datedatetime'datetime.datetime(2018, 9, 20, 10, 1, 52, 414750)''2018-09-20 10:01:52.414750'

我原以为会有一个现成的处理器来处理这个问题,但我找不到。

4

1 回答 1

1

这是我想出的解决方案,但考虑到它的高度递归性质以及不必要的对象重建,我担心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加入通话processorsstructlog.configure

于 2018-09-20T14:37:40.060 回答