Sha256: 606b17d1478080c039937bf9d3f0772d7d4434354d355be0d5ec3a00868b774a

Contents?: true

Size: 1015 Bytes

Versions: 1

Compression:

Stored size: 1015 Bytes

Contents

require 'log4r/outputter/syslogoutputter'

module Log4r
  class BufferedSyslogOutputter < SyslogOutputter

    def initialize(*args)
      super
      @buff = {}
    end

    def flush
      synch do
        begin
          @buff.each do |pri, message|
            Syslog.open(@ident, @logopt, @facility) do |s|
              s.log(pri, '%s', message.join("\t"))
            end
          end
        ensure
          @buff.clear
        end
      end
    end

    private

    def canonical_log(logevent)
      begin
        pri = SYSLOG_LEVELS_MAP[@levels_map[LNAMES[logevent.level]]]
      rescue
        pri = LOG_INFO
      end

      return if logevent.data.empty?

      o = format(logevent)
      msg = if o.is_a? Exception
              "#{o.class} at (#{o.backtrace[0]}): #{o.message}"
            elsif o.respond_to?(:to_str)
              o.to_str
            else
              o.inspect
            end
      synch { @buff.has_key?(pri) ? @buff[pri].push(msg) : @buff[pri] = [msg] }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
log4rails-1.1.11 lib/log4r/outputter/bufferedsyslogoutputter.rb