#707·zerolog

问题:我是否总是应该使用 (*Event).Str、(*Event).Uint 等返回值?

作者: ratbekn创建于 2025年1月20日更新于 2026年1月26日

您好! 哪种方法是正确的? 1.

    func (o *Order) foo(e *zerolog.Event) {
        ...
        e.Str(OrderID, o.ID)
        ...
    }

我在这里关注的是, func (e *Event) Str(key, val string) *Event 没有明确说明 e 是在原地修改的。它只说明了它“添加了字段 key…”并且返回了 *Event。因此, 这种基于 func (e *Event) Str… 未记录的行为的方法。 问题: 有一天行为会被更改, 因此此代码将不再工作吗? 2.

    func (o *Order) foo(e *zerolog.Event) {
        ...
        *e = *(e.Str(OrderID, o.ID))
        ...
    }

这种方法更加可靠, 但可读性较差。 我们是否总是应该使用这种方法?