class LogStash::Outputs::CoralogixLogger

Public Instance Methods

configure() click to toggle source

This method is called before starting.

# File lib/logstash/outputs/coralogix_logger.rb, line 81
def configure
  begin
    @loggers = {}
    #If config parameters doesn't start with $ then we can configure Coralogix logger now.
    if !config_params["APP_NAME"].start_with?("$") && !config_params["SUB_SYSTEM"].start_with?("$")
      @logger = Coralogix::CoralogixLogger.new config_params["PRIVATE_KEY"], config_params["APP_NAME"], config_params["SUB_SYSTEM"], debug, "Logstash (#{version?})", force_compression
      @configured = true
    end
  rescue Exception => e
    $stderr.write "Failed to configure: #{e}"
  end
end
convert_to_json(str) click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 71
  def convert_to_json str
    begin
        p = JSON::Parser.new(str, {:create_additions => true})
        return p.parse
    rescue Exception => e  
        return str
    end
end
extract(record, key, default) click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 94
def extract record, key, default
  begin
    res = record
    return key unless key.start_with?("$")
    key[1..-1].split(".").each do |k|
      res = res.fetch(k,nil)
      return default if res == nil
    end
    return res
  rescue Exception => e
    return default
  end
end
get_app_sub_name(record) click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 109
def get_app_sub_name(record)
  app_name = extract(record, config_params["APP_NAME"], DEFAULT_APP_NAME)
  sub_name = extract(record, config_params["SUB_SYSTEM"], DEFAULT_SUB_SYSTEM)
  return app_name, sub_name
end
get_logger(record) click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 115
def get_logger(record)

  return @logger if @configured
  
  app_name, sub_name = get_app_sub_name(record)
  
  if !@loggers.key?("#{app_name}.#{sub_name}")
    @loggers["#{app_name}.#{sub_name}"] = Coralogix::CoralogixLogger.new config_params["PRIVATE_KEY"], app_name, sub_name, debug, "Logstash (#{version?})", force_compression
  end

  return @loggers["#{app_name}.#{sub_name}"]
end
multi_receive(events) click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 28
def multi_receive(events)
  events.each do |record|
      record = record.to_hash

      temp_key = (log_key_name  == nil) ? "message" : log_key_name

      if record[temp_key] != nil
        record[temp_key] = is_json ? convert_to_json(record[temp_key]) : record[temp_key]
      end

      logger = get_logger(record)
 
      log_record = log_key_name != nil ? record.fetch(log_key_name, record) : record

      log_record = (is_json && record[temp_key] != nil) ? log_record.to_json  : log_record

      log_record = (log_record == nil || log_record.to_s.empty?) ? record  : log_record

      timestamp = record.fetch(timestamp_key_name, nil)
  
      if(timestamp.nil?)
        logger.debug log_record
      else
        begin
          float_timestamp = DateTime.parse(timestamp.to_s).to_time.to_f * 1000
          logger.debug log_record, nil, timestamp:float_timestamp
        rescue Exception => e  
          logger.debug log_record
        end          
      end
  end

  return 1
end
register() click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 23
def register
  configure
end
version?() click to toggle source
# File lib/logstash/outputs/coralogix_logger.rb, line 63
def version?
    begin
        Gem.loaded_specs['logstash-output-coralogix_logger'].version.to_s
    rescue Exception => e  
        return '0.0.0'
    end
end