Module: LogStruct::Log::SerializeCommonPublic

Extended by:
T::Helpers, T::Sig
Defined in:
lib/log_struct/shared/serialize_common_public.rb

Overview

Common serialization for public custom log structs with string/symbol source/event

Instance Method Summary collapse

Instance Method Details

#as_json(options = nil) ⇒ Hash{String => T.untyped}

Parameters:

  • options (T.untyped) (defaults to: nil)

Returns:

  • (Hash{String => T.untyped})


39
40
41
# File 'lib/log_struct/shared/serialize_common_public.rb', line 39

def as_json(options = nil)
  serialize.transform_keys(&:to_s)
end

#serialize_common_public(strict = true) ⇒ Hash{Symbol => T.untyped}

Parameters:

  • strict (Boolean) (defaults to: true)

Returns:

  • (Hash{Symbol => T.untyped})


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/log_struct/shared/serialize_common_public.rb', line 18

def serialize_common_public(strict = true)
  unless respond_to?(:source) && respond_to?(:event)
    raise ArgumentError, "Public log struct must define #source and #event"
  end

  src_val = public_send(:source)
  evt_val = public_send(:event)
  src = src_val.respond_to?(:serialize) ? src_val.public_send(:serialize).to_s : src_val.to_s
  evt = evt_val.respond_to?(:serialize) ? evt_val.public_send(:serialize).to_s : evt_val.to_s
  lvl = level.serialize.to_s
  ts = timestamp.iso8601(3)

  {
    LogField::Source.serialize => src,
    LogField::Event.serialize => evt,
    LogField::Level.serialize => lvl,
    LogField::Timestamp.serialize => ts
  }
end