Sha256: 34545e93c9c2051ae85d778f775f4759516406346c51347d9250db146d2b1bbb

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

require 'fluent-logger'
require_relative 'log_repository'

module RTALogger
  class LogRepositoryFluent < LogRepository
    def initialize(host = 'localhost', port = 24224, tls_options = nil)
      super()
      @host = host
      @port = port
      @tls_options = tls_options
      @formatter = RTALogger::LogFactory.log_formatter_json
      if @tls_options
        @fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, :host => @host, :port => @port, :use_nonblock => true, :wait_writeable => false)
      else
        @fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, :host => @host, :port => @port, :tls_options => @tls_options, :use_nonblock => true, :wait_writeable => false)
      end
    end

    def flush_and_clear
      semaphore.synchronize do
        @log_records.each do |log_record|
          fluent_tag = log_record.app_name + '.' + log_record.topic_title
          log_json_string = @formatter.format(log_record)
          log_json = JSON.parse(log_json_string)

          @fluent_logger.post(fluent_tag, log_json)
        end
      end
      super
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
RTALogger-0.1.4 lib/log_repository_fluent.rb
RTALogger-0.1.3 lib/log_repository_fluent.rb
RTALogger-0.1.2 lib/log_repository_fluent.rb