Module: LogStruct::Log::Shared::SerializeCommon

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})


53
54
55
# File 'lib/log_struct/shared/serialize_common.rb', line 53

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

#serialize(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
37
38
39
40
# File 'lib/log_struct/shared/serialize_common.rb', line 18

def serialize(strict = true)
  # Start with shared fields (source, event, level, timestamp)
  out = serialize_common(strict)

  # Merge event/base fields from the struct-specific hash
  kernel_self = T.cast(self, Kernel)
  field_hash = T.cast(kernel_self.public_send(:to_h), T::Hash[LogStruct::LogField, T.untyped])
  field_hash.each do |log_field, value|
    next if value.nil?
    key = log_field.serialize
    # (The formatter cuts a backtrace to config.limits.max_backtrace_lines)
    out[key] = value.is_a?(::Time) ? value.iso8601(3) : value
  end

  # Merge any additional_data at top level if available
  if kernel_self.respond_to?(:merge_additional_data_fields)
    # merge_additional_data_fields expects symbol keys
    merge_target = T.cast(self, LogStruct::Log::Shared::MergeAdditionalDataFields)
    merge_target.merge_additional_data_fields(out)
  end

  out
end

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

Parameters:

  • strict (Boolean) (defaults to: true)

Returns:

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


43
44
45
46
47
48
49
50
# File 'lib/log_struct/shared/serialize_common.rb', line 43

def serialize_common(strict = true)
  {
    LogField::Source.serialize => source.serialize.to_s,
    LogField::Event.serialize => event.serialize.to_s,
    LogField::Level.serialize => level.serialize.to_s,
    LogField::Timestamp.serialize => timestamp.iso8601(3)
  }
end