diff --git a/CHANGELOG b/CHANGELOG index 041a6341d..e1458cc8b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ 1.1.5 (????????????????) - irc input now stores nick + - new output: lumberjack 1.1.4 (October 28, 2012) ## Overview of this release: diff --git a/lib/logstash/outputs/lumberjack.rb b/lib/logstash/outputs/lumberjack.rb new file mode 100644 index 000000000..0ac2edd41 --- /dev/null +++ b/lib/logstash/outputs/lumberjack.rb @@ -0,0 +1,50 @@ +class LogStash::Outputs::Lumberjack < LogStash::Outputs::Base + + config_name "lumberjack" + plugin_status "experimental" + + # list of addresses lumberjack can send to + config :hosts, :validate => :array, :required => true + + # the port to connect to + config :port, :validate => :number, :required => true + + # ssl certificate to use + config :ssl_certificate, :validate => :string, :required => true + + # ssl key to use + config :window_size, :validate => :number, :default => 5000 + + public + def register + require 'lumberjack/client' + connect + end # def register + + public + def receive(event) + return unless output?(event) + begin + @client.write("line" => event.message, "host" => event.source_host, "file" => event.source_path) + rescue Exception => e + @logger.log("Client write error", :e => e, :backtrace => e.backtrace) + connect + retry + end + end # def receive + + private + def connect + @logger.info("Connecting to lumberjack server.", :addresses => @hosts, :port => @port, + :ssl_certificate => @ssl_certificate, :window_size => @window_size) + begin + @client = Lumberjack::Client.new(:addresses => @hosts, :port => @port, + :ssl_certificate => @ssl_certificate, :window_size => @window_size) + rescue Exception => e + @logger.error("All hosts unavailable, sleeping", :hosts => @hosts, :e => e, + :backtrace => e.backtrace, :host => @client.host) + sleep(10) + retry + end + end +end \ No newline at end of file diff --git a/logstash.gemspec b/logstash.gemspec index 896a6f572..1a22f5de6 100644 --- a/logstash.gemspec +++ b/logstash.gemspec @@ -53,7 +53,7 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency "uuidtools" # For generating amqp queue names gem.add_runtime_dependency "xml-simple" gem.add_runtime_dependency "xmpp4r", ["0.5"] - gem.add_runtime_dependency "jls-lumberjack", ["0.0.9000"] + gem.add_runtime_dependency "jls-lumberjack", ["0.0.4"] gem.add_runtime_dependency "geoip", [">= 1.1.0"] gem.add_runtime_dependency "beefcake", "0.3.7"