Sha256: 210cc7cf0ff2f49b87f8ae3302ec146701f5db638adbba7b21b39ba2a50907ae

Contents?: true

Size: 1.29 KB

Versions: 136

Compression:

Stored size: 1.29 KB

Contents

# :nodoc:
require "log4r/outputter/outputter"
require "log4r/staticlogger"

module Log4r
  
  ##
  # IO Outputter invokes print then flush on the wrapped IO
  # object. If the IO stream dies, IOOutputter sets itself to OFF
  # and the system continues on its merry way.
  #
  # To find out why an IO stream died, create a logger named 'log4r'
  # and look at the output.

  class IOOutputter < Outputter

    # IOOutputter needs an IO object to write to.
    def initialize(_name, _out, hash={})
      super(_name, hash)
      @out = _out
    end

    def closed?
      @out.closed?
    end

    # Close the IO and sets level to OFF
    def close
      @out.close unless @out.nil?
      @level = OFF
      OutputterFactory.create_methods(self)
      Logger.log_internal {"Outputter '#{@name}' closed IO and set to OFF"}
    end

    #######
    private
    #######
    
    # perform the write
    def write(data)
      begin
        @out.print data
        @out.flush
      rescue IOError => ioe # recover from this instead of crash
        Logger.log_internal {"IOError in Outputter '#{@name}'!"}
        Logger.log_internal {ioe}
        close
      rescue NameError => ne
        Logger.log_internal {"Outputter '#{@name}' IO is #{@out.class}!"}
        Logger.log_internal {ne}
        close
      end
    end
  end
end

Version data entries

136 entries across 98 versions & 17 rubygems

Version Path
vagrant-unbundled-2.2.19.0 vendor/bundle/ruby/3.0.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.7.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.4.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.6.2 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.6.1 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.6.0 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.5.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.5.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.6.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.3.0 vendor/bundle/ruby/2.5.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb
vagrant-unbundled-2.2.2.0 vendor/bundle/ruby/2.5.0/gems/log4r-1.1.10/lib/log4r/outputter/iooutputter.rb