class ChiliLogger::MessageWriter

class for writing log messages

Public Class Methods

new(config) click to toggle source
# File lib/message_writer/message_writer.rb, line 8
def initialize(config)
  @default = ChiliLogger::Values::Default.new
  @env = config[:env] || @default.env
  @layer = config[:layer] || @default.layer
  @server_url = config[:server_url] || @default.server_url
  @cloud_provider = config[:cloud_provider]
end

Public Instance Methods

clean_backtrace(backtrace) click to toggle source
# File lib/message_writer/message_writer.rb, line 28
def clean_backtrace(backtrace)
  backtrace.reject! { |line| line =~ %r{bundle\/gems} }
  backtrace
end
write(**options) click to toggle source
# File lib/message_writer/message_writer.rb, line 16
def write(**options)
  return if ChiliLogger.instance.deactivated

  desc = options[:desc] || @default.desc
  user = options[:user] || @default.user
  main_content = options[:main_content] || @default.main_content

  main_content[:backtrace] = clean_backtrace(caller)
  update_logs_coverage(desc, main_content)
  message_hash(desc: desc, user: user, main_content: main_content)
end
write_description_tag(desc) click to toggle source
# File lib/message_writer/message_writer.rb, line 33
def write_description_tag(desc)
  env = desc[:env] || @env
  layer = desc[:layer] || @layer
  type = desc[:type] || @default.type
  service = desc[:service] || @default.service
  action = desc[:action] || @default.action

  "#{env}.#{layer}.#{type}.#{service}.#{action}"
end

Private Instance Methods

cloud_metadata() click to toggle source
# File lib/message_writer/message_writer.rb, line 82
def cloud_metadata
  {
    aws: AwsOpsMetadata
  }
end
message_hash(**options) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/message_writer/message_writer.rb, line 52
def message_hash(**options)
  desc = options[:desc]
  {
    desc: write_description_tag(desc),
    env: @env,
    layer: @layer,
    type: desc[:type] || @default.type,
    service: desc[:service] || @default.service,
    action: desc[:action] || @default.action,
    user: options[:user] || @default.undefined_string,
    timestamp: DateTime.now,
    "#{desc[:type]}": options[:main_content] || {},
    ops_metadata: write_ops_metadata
  }
end
update_logs_coverage(desc, main_content) click to toggle source

uses message infos to keep logs_coverage up to date with what logs are being generated in the application

# File lib/message_writer/message_writer.rb, line 46
def update_logs_coverage(desc, main_content)
  backtrace = main_content[:backtrace] || clean_backtrace(caller)
  CoverageWriter.write(desc, backtrace)
end
write_ops_metadata() click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/message_writer/message_writer.rb, line 69
def write_ops_metadata
  return unless @cloud_provider

  provider = @cloud_provider.is_a?(String) ? @cloud_provider.to_sym : @cloud_provider
  cloud_ops_metadata = cloud_metadata[provider]
  return unless cloud_ops_metadata

  {
    server_url: @server_url,
    cloud: cloud_ops_metadata.write
  }
end