Sha256: fb5ea720c5da6e0504b2cf0bd724c31d910de2e3f4f5d1096d028925d5818132
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
require 'socket' require 'syslog_protocol' module RemoteSyslogLogger class UdpSender def initialize(remote_hostname, remote_port, options = {}) @remote_hostname = remote_hostname @remote_port = remote_port @whinyerrors = options[:whinyerrors] @socket = UDPSocket.new @packet = SyslogProtocol::Packet.new local_hostname = options[:local_hostname] || (Socket.gethostname rescue `hostname`.chomp) local_hostname = 'localhost' if local_hostname.nil? || local_hostname.empty? @packet.hostname = local_hostname @packet.facility = options[:facility] || 'user' @packet.severity = options[:severity] || 'notice' @packet.tag = options[:program] || "#{File.basename($0)}[#{$$}]" end def transmit(message) message.split(/\r?\n/).each do |line| begin next if line =~ /^\s*$/ packet = @packet.dup packet.content = line @socket.send(packet.assemble, 0, @remote_hostname, @remote_port) rescue $stderr.puts "#{self.class} error: #{$!.class}: #{$!}\nOriginal message: #{line}" raise if @whinyerrors end end end # Make this act a little bit like an `IO` object alias_method :write, :transmit def close @socket.close end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
remote_syslog_logger-1.0.3 | lib/remote_syslog_logger/udp_sender.rb |