func createPayloadWithFields()

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
}