Class: Logging::Appenders::IO
- Inherits:
-
Logging::Appender
- Object
- Logging::Appender
- Logging::Appenders::IO
- Includes:
- Buffering
- Defined in:
- lib/logging/appenders/io.rb
Overview
This class provides an Appender that can write to any IO stream configured for writing.
Direct Known Subclasses
Constant Summary
Constants included from Buffering
Buffering::DEFAULT_BUFFER_SIZE
Instance Attribute Summary collapse
-
#close_method ⇒ Object
The method that will be used to close the IO stream.
Attributes included from Buffering
#auto_flushing, #buffer, #flush_period
Attributes inherited from Logging::Appender
Instance Method Summary collapse
-
#close(*args) ⇒ Object
call-seq: close( footer = true ).
-
#initialize(name, io, opts = {}) ⇒ IO
constructor
call-seq: IO.new( name, io ) IO.new( name, io, :layout => layout ).
Methods included from Buffering
#flush, #immediate_at=, #reopen
Methods inherited from Logging::Appender
#<<, #append, #closed?, #flush, #inspect, #reopen
Constructor Details
#initialize(name, io, opts = {}) ⇒ IO
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/logging/appenders/io.rb', line 23 def initialize( name, io, opts = {} ) unless io.respond_to? :syswrite raise TypeError, "expecting an IO object but got '#{io.class.name}'" end @io = io @io.sync = true if io.respond_to? :sync= # syswrite complains if the IO stream is buffered @close_method = :close super(name, opts) configure_buffering(opts) end |
Instance Attribute Details
#close_method ⇒ Object
The method that will be used to close the IO stream. Defaults to :close but can be :close_read, :close_write or nil. When nil, the IO stream will not be closed when the appender’s close method is called.
14 15 16 |
# File 'lib/logging/appenders/io.rb', line 14 def close_method @close_method end |
Instance Method Details
#close(*args) ⇒ Object
call-seq:
close( = true )
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.
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/logging/appenders/io.rb', line 44 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 and io.respond_to? @close_method end rescue IOError ensure return self end |