class Fluent::SyslogOutput

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluentd/plugin/out_syslog.rb, line 22
def initialize
  super
  require 'socket'
  require 'syslog_protocol'
end

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluentd/plugin/out_syslog.rb, line 28
def configure(conf)
  super
  if not conf['remote_syslog']
    raise Fluent::ConfigError.new("remote syslog required")
  end
  @socket = UDPSocket.new
  @packet = SyslogProtocol::Packet.new
  if remove_tag_prefix = conf['remove_tag_prefix']
      @remove_tag_prefix = Regexp.new('^' + Regexp.escape(remove_tag_prefix))
  end
  @facilty = conf['facility']
  @severity = conf['severity']
  @use_record = conf['use_record']
  @payload_key = conf['payload_key']
  if not @payload_key
    @payload_key = "message"
  end
end
emit(tag, es, chain) click to toggle source

This method is called when an event reaches Fluentd. 'es' is a Fluent::EventStream object that includes multiple events. You can use 'es.each {|time,record| … }' to retrieve events. 'chain' is an object that manages transactions. Call 'chain.next' at appropriate points and rollback if it raises an exception.

# File lib/fluentd/plugin/out_syslog.rb, line 63
def emit(tag, es, chain)
  tag = tag.sub(@remove_tag_prefix, '') if @remove_tag_prefix
  chain.next
  es.each {|time,record|
    @packet.hostname = hostname
    if @use_record
      @packet.facility = record['facility'] || @facilty
      @packet.severity = record['severity'] || @severity
    else
      @packet.facility = @facilty
      @packet.severity = @severity
    end
    if record['time']
      time = Time.parse(record['time'])
    else
      time = Time.now
    end
    @packet.time = time
    @packet.tag      = if tag_key
                          record[tag_key][0..31].gsub(/[\[\]]/,'') # tag is trimmed to 32 chars for syslog_protocol gem compatibility
                       else
                          tag[0..31] # tag is trimmed to 32 chars for syslog_protocol gem compatibility
                       end
    packet = @packet.dup
    packet.content = record[@payload_key]
    @socket.send(packet.assemble, 0, @remote_syslog, @port)
}
end
shutdown() click to toggle source

This method is called when shutting down.

Calls superclass method
# File lib/fluentd/plugin/out_syslog.rb, line 54
def shutdown
  super
end
start() click to toggle source

This method is called when starting.

Calls superclass method
# File lib/fluentd/plugin/out_syslog.rb, line 49
def start
  super
end