Sha256: 74327282cb5bbf3cc051b7a1b330c41e8525be94b92eb3a7d10d227b262a7ded

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require "fluent/mixin/config_placeholders"
require "fluent/mixin/plaintextformatter"
require 'fluent/mixin/rewrite_tag_name'

module Fluent
  class RemoteSyslogTcpOutput < Fluent::Output
    Fluent::Plugin.register_output("remote_syslog_tcp", self)

    config_param :hostname, :string, :default => ""

    include Fluent::Mixin::PlainTextFormatter
    include Fluent::Mixin::ConfigPlaceholders
    include Fluent::HandleTagNameMixin
    include Fluent::Mixin::RewriteTagName

    config_param :host, :string
    config_param :port, :integer, :default => 514

    config_param :facility, :string, :default => "syslog"
    config_param :severity, :string, :default => "debug"
    config_param :tag, :string, :default => "fluentd"

    def initialize
      super
      require "remote_syslog_logger_custom"
      require "socket"
      @loggers = {}
    end

    def shutdown
      @loggers.values.each(&:close)
      super
    end

    def emit(tag, es, chain)
      es.each do |time, record|
        record.each_pair do |k, v|
          if v.is_a?(String)
            v.force_encoding("utf-8")
          end
        end

        tag = rewrite_tag!(tag.dup)
        @loggers[tag] ||= RemoteSyslogLoggerCustom::TcpSender.new(@host,
          @port,
          facility: record["facility"] || @facility,
          severity: record["severity"] || @severity,
          program: tag,
          local_hostname: Socket.gethostname)

        @loggers[tag].transmit format(tag, timestamp, modify_record(time, record))
      end
      chain.next
    end

    def modify_record(time, record)
     if record['msec'] then
       record['@timestamp'] = Time.at(time, record['msec'].to_i * 1000).strftime("%Y-%m-%dT%H:%M:%S.%L%z")
       record.delete('msec')
     end
     record
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-remote_syslog_tcp-0.3.9.1 lib/fluent/plugin/out_remote_syslog_tcp.rb