Class: LogStash::Filters::Jdbc

Inherits:
Base
  • Object
show all
Includes:
PluginMixins::Jdbc
Defined in:
lib/logstash/filters/jdbc.rb

Overview

This filter executes a SQL query and store the result set in the field specified as ‘target`.

For example you can load a row based on an id from in the event

source,ruby

filter

jdbc {
  jdbc_driver_library => "/path/to/mysql-connector-java-5.1.34-bin.jar"
  jdbc_driver_class => "com.mysql.jdbc.Driver"
  jdbc_connection_string => ""jdbc:mysql://localhost:3306/mydatabase"
  jdbc_user => "me"
  jdbc_password => "secret"
  statement => "select * from WORLD.COUNTRY WHERE Code = :code"
  parameters => { "code" => "country_code"
  target => "country_details"
}

}

Instance Method Summary collapse

Instance Method Details

#filter(event) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/logstash/filters/jdbc.rb', line 51

def filter(event)
  result = []
  #Prepare parameters from event values
  params = @parameters.inject({}) {|hash,(k,v)| hash[k] = event.get(event.sprintf(v)) ; hash }
  #Execute statement and collect results
  success = execute_statement(@statement,params) do |row|
    result << row
  end
  if success
    event.set(@target, result)
    filter_matched(event)
  else
    @tag_on_failure.each do |tag|
      event.tag(tag)
    end
  end
end

#registerObject



45
46
47
48
# File 'lib/logstash/filters/jdbc.rb', line 45

def register
  @logger = self.logger
  prepare_jdbc_connection()
end