in sharedlibraries/log/cloudlog.go [144:198]
func createPayloadWithFields(additionalFields []zapcore.Field) map[string]any {
payload := make(map[string]any)
for _, f := range additionalFields {
switch f.Type {
case zapcore.BoolType:
payload[f.Key] = (f.Integer == 1)
case zapcore.ByteStringType, zapcore.StringType:
payload[f.Key] = f.String
case zapcore.Complex128Type, zapcore.Complex64Type:
payload[f.Key] = fmt.Sprint(f.Interface)
case zapcore.DurationType:
payload[f.Key] = time.Duration(f.Integer).String()
case zapcore.Float64Type:
payload[f.Key] = float64(f.Integer)
case zapcore.Float32Type:
payload[f.Key] = float32(f.Integer)
case zapcore.Int64Type:
payload[f.Key] = int64(f.Integer)
case zapcore.Int32Type:
payload[f.Key] = int32(f.Integer)
case zapcore.Int16Type:
payload[f.Key] = int16(f.Integer)
case zapcore.Int8Type:
payload[f.Key] = int8(f.Integer)
case zapcore.TimeType:
if f.Interface != nil {
payload[f.Key] = time.Unix(0, f.Integer).In(f.Interface.(*time.Location))
} else {
// Fall back to UTC if location is nil.
payload[f.Key] = time.Unix(0, f.Integer)
}
case zapcore.TimeFullType:
payload[f.Key] = f.Interface.(time.Time)
case zapcore.Uint64Type:
payload[f.Key] = uint64(f.Integer)
case zapcore.Uint32Type:
payload[f.Key] = uint32(f.Integer)
case zapcore.Uint16Type:
payload[f.Key] = uint16(f.Integer)
case zapcore.Uint8Type:
payload[f.Key] = uint8(f.Integer)
case zapcore.UintptrType:
payload[f.Key] = uintptr(f.Integer)
case zapcore.StringerType:
payload[f.Key] = f.Interface.(fmt.Stringer).String()
case zapcore.ErrorType:
payload[f.Key] = f.Interface.(error).Error()
case zapcore.SkipType:
continue
default:
payload[f.Key] = f.Interface
}
}
return payload
}