Module: Lenjador::Utils

Defined in:
lib/lenjador/utils.rb

Constant Summary collapse

DECIMAL_FRACTION_OF_SECOND =
3
NO_TRACE_INFORMATION =
{}.freeze
DUMP_OPTIONS =
{
  mode: :custom,
  time_format: :xmlschema,
  second_precision: 3
}.freeze

Class Method Summary collapse

Class Method Details

.application_name(service_name) ⇒ String

Return application name

Returns lower snake case application name. This allows the application value to be used in the elasticsearch index name.

Parameters:

  • service_name (String)

Returns:

  • (String)


41
42
43
# File 'lib/lenjador/utils.rb', line 41

def self.application_name(service_name)
  underscore(service_name)
end

.build_event(metadata, level, application_name) ⇒ Hash

Build logstash json compatible event

Parameters:

  • metadata (Hash)
  • level (#to_s)
  • service_name (String)

Returns:

  • (Hash)


23
24
25
26
27
28
29
30
31
# File 'lib/lenjador/utils.rb', line 23

def self.build_event(, level, application_name)
  overwritable_params
    .merge!()
    .merge!(tracing_information)
    .merge!(
      application: application_name,
      level: level
    )
end

.generate_json(obj) ⇒ Object



52
53
54
# File 'lib/lenjador/utils.rb', line 52

def self.generate_json(obj)
  Oj.dump(obj, DUMP_OPTIONS)
end

.underscore(input) ⇒ Object



56
57
58
59
60
61
62
63
64
# File 'lib/lenjador/utils.rb', line 56

def self.underscore(input)
  word = input.to_s.dup
  word.gsub!(/::/, '/')
  word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
  word.tr!('-', '_')
  word.downcase!
  word
end