class LogStash::Outputs::Mongodb
Public Instance Methods
receive(event)
click to toggle source
# File lib/logstash/outputs/mongodb.rb, line 51 def receive(event) return unless output?(event) begin if @isodate # the mongodb driver wants time values as a ruby Time object. # set the @timestamp value of the document to a ruby Time object, then. document = event.to_hash else document = event.to_hash.merge("@timestamp" => event["@timestamp"].to_json) end if @generateId document['_id'] = BSON::ObjectId.new(nil, event["@timestamp"]) end @db.collection(event.sprintf(@collection)).insert(document) rescue => e @logger.warn("Failed to send event to MongoDB", :event => event, :exception => e, :backtrace => e.backtrace) if e.error_code == 11000 # On a duplicate key error, skip the insert. # We could check if the duplicate key err is the _id key # and generate a new primary key. # If the duplicate key error is on another field, we have no way # to fix the issue. else sleep @retry_delay retry end end end
register()
click to toggle source
# File lib/logstash/outputs/mongodb.rb, line 35 def register require "mongo" uriParsed=Mongo::URIParser.new(@uri) conn = uriParsed.connection({}) if uriParsed.auths.length > 0 uriParsed.auths.each do |auth| if !auth['db_name'].nil? conn.add_auth(auth['db_name'], auth['username'], auth['password'], nil) end end conn.apply_saved_authentication() end @db = conn.db(@database) end