-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathuser.go
33 lines (28 loc) · 808 Bytes
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package zapsentry
import (
"github.com/getsentry/sentry-go"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// User extends sentry.User to be a zapcore.ObjectMarshaler.
//
// This object can be passed to the logger as a field,
// causing the underlying core to set Event.User to the field value.
type User sentry.User
// MarshalLogObject implements zapcore.ObjectMarshaler interface.
func (user User) MarshalLogObject(enc zapcore.ObjectEncoder) error {
add := func(key, value string) {
if value != "" {
enc.AddString(key, value)
}
}
add("email", user.Email)
add("id", user.ID)
add("ip_address", user.IPAddress)
add("username", user.Username)
return nil
}
// UserField turns the given user object into a field.
func UserField(user User) zapcore.Field {
return zap.Object(UserKey, user)
}