class Fluentd

Public Class Methods

get_logger(**options) click to toggle source
# File lib/fluentd.rb, line 7
def self.get_logger(**options)
  service_name = options.delete(:service_name)
  logger = Fluent::Logger::LevelFluentLogger.new(
    service_name,
    host: options.delete(:host),
    port: options.delete(:port)
  )

  logger.formatter = build_formatter(service_name)
  logger
end

Private Class Methods

build_formatter(service_name) click to toggle source
# File lib/fluentd.rb, line 19
def self.build_formatter(service_name)
  proc do |severity, datetime, progname, message|
    map = { level: severity }
    map[:message] = message[:error] || message[:event] || message[:command]
    %i[error error_trace command result event name args source].each do |item|
      map[item] = message[item] if message[item] && !message[item].empty?
    end
    map[:progname] = progname if progname
    if datetime
      map['@timestamp'] = datetime.strftime('%Y-%m-%dT%H:%M:%S.%3NZ')
    end
    map[:environment] = ENV.fetch('FLUENTD_LOGGING_ENVIRONMENT', 'undefined')
    map[:service_name] = service_name
    map[:app_version] = ENV.fetch('APP_VERSION', 'undefined')
    map
  end
end