Class: LogStash::Outputs::CoralogixLogger

Inherits:
Base
  • Object
show all
Defined in:
lib/logstash/outputs/coralogix_logger.rb

Instance Method Summary collapse

Instance Method Details

#configureObject

This method is called before starting.



80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/logstash/outputs/coralogix_logger.rb', line 80

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?})"
      @configured = true
    end
  rescue Exception => e
    $stderr.write "Failed to configure: #{e}"
  end
end

#convert_to_json(str) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/logstash/outputs/coralogix_logger.rb', line 70

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) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/logstash/outputs/coralogix_logger.rb', line 93

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) ⇒ Object



108
109
110
111
112
# File 'lib/logstash/outputs/coralogix_logger.rb', line 108

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) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/logstash/outputs/coralogix_logger.rb', line 114

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?})"
  end

  return @loggers["#{app_name}.#{sub_name}"]
end

#multi_receive(events) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/logstash/outputs/coralogix_logger.rb', line 27

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

#registerObject



22
23
24
# File 'lib/logstash/outputs/coralogix_logger.rb', line 22

def register
  configure
end

#version?Boolean

def event

Returns:

  • (Boolean)


62
63
64
65
66
67
68
# File 'lib/logstash/outputs/coralogix_logger.rb', line 62

def version?
    begin
        Gem.loaded_specs['logstash-output-coralogix_logger'].version.to_s
    rescue Exception => e  
        return '0.0.0'
    end
end