class Vx::Lib::Logger::LogstashDevice
Public Class Methods
new()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 9 def initialize @mutex = Mutex.new @queue = Queue.new end
Public Instance Methods
close()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 30 def close @mutex.synchronize do begin @io && @io.close rescue Exception => e warn "#{self.class} - #{e.class} - #{e.message}" ensure @io = nil end end end
connected?()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 26 def connected? !!@io end
enabled?()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 22 def enabled? !!uri end
flush()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 49 def flush @mutex.synchronize do @io && @io.flush end end
logger_thread()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 61 def logger_thread @logger_loop ||= Thread.new do loop do m = @queue.pop with_connection do @io.write m end end end end
uri()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 14 def uri @uri ||= begin h = ENV['LOGSTASH_HOST'] URI("logstash://#{h}") if h end end
wait()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 55 def wait while !@queue.empty? sleep 0.1 end end
write(message)
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 42 def write(message) if enabled? logger_thread @queue.push message end end
Private Instance Methods
connect()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 94 def connect @io = TCPSocket.new(host, port).tap do |socket| socket.sync = true end end
host()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 74 def host uri.host end
port()
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 78 def port @port ||= uri.port || 514 end
warn(msg)
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 82 def warn(msg) $stderr.puts "[warn ] #{msg}" end
with_connection() { || ... }
click to toggle source
# File lib/vx/lib/logger/logstash_device.rb, line 86 def with_connection(&block) connect unless connected? yield rescue Exception => e warn "#{self.class} - #{e.class} - #{e.message}" close end