class Logging::Appenders::IO
This class provides an Appender that can write to any IO stream configured for writing.
Attributes
Public Class Methods
new( name, io )
click to toggle source
new( name, io, :layout → layout )
Creates a new IO Appender using the given name that will use the io stream as the logging destination.
Calls superclass method
Logging::Appenders::Buffering.new
# File lib/logging/appenders/io.rb, line 30 def initialize( name, io, opts = {} ) unless io.respond_to? :write raise TypeError, "expecting an IO object but got '#{io.class.name}'" end @io = io @io.sync = true if io.respond_to? :sync= @close_method = :close super(name, opts) configure_buffering(opts) end
Public Instance Methods
close( footer = true )
click to toggle source
Close the appender and writes the layout footer to the logging destination
if the footer flag is set to true
. Log events will no
longer be written to the logging destination after the appender is closed.
Calls superclass method
Logging::Appenders::Buffering#close
# File lib/logging/appenders/io.rb, line 51 def close( *args ) return self if @io.nil? super io, @io = @io, nil unless [STDIN, STDERR, STDOUT].include?(io) io.send(@close_method) if @close_method && io.respond_to?(@close_method) end rescue IOError ensure return self end
Private Instance Methods
canonical_write( str )
click to toggle source
This method is called by the buffering code when messages need to be written to the logging destination.
# File lib/logging/appenders/io.rb, line 70 def canonical_write( str ) return self if @io.nil? str = str.force_encoding(encoding) if encoding && str.encoding != encoding @io.write str self rescue StandardError => err handle_internal_error(err) end
handle_internal_error( err )
click to toggle source
# File lib/logging/appenders/io.rb, line 79 def handle_internal_error( err ) return err if off? self.level = :off ::Logging.log_internal {"appender #{name.inspect} has been disabled"} ::Logging.log_internal_error(err) end