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
#async, #auto_flushing, #buffer, #flush_period, #write_size
Attributes inherited from Logging::Appender
#encoding, #filters, #layout, #level, #name
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 ).
-
#reopen ⇒ Object
Reopen the connection to the underlying logging destination.
Methods included from Buffering
#clear!, #flush, #flush_period?, #immediate_at=
Methods inherited from Logging::Appender
#<<, #_to_s, #add_filters, #allow, #append, #closed?, #flush, #off?, #to_s
Constructor Details
#initialize(name, io, opts = {}) ⇒ IO
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/logging/appenders/io.rb', line 26 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 |
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.
18 19 20 |
# File 'lib/logging/appenders/io.rb', line 18 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.
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/logging/appenders/io.rb', line 46 def close( *args ) return self if @io.nil? super io, @io = @io, nil if ![STDIN, STDERR, STDOUT].include?(io) io.send(@close_method) if @close_method && io.respond_to?(@close_method) end rescue IOError ensure return self end |
#reopen ⇒ Object
Reopen the connection to the underlying logging destination. If the connection is currently closed then it will be opened. If the connection is currently open then it will be closed and immediately opened. If supported, the IO will have its sync mode set to ‘true` so that all writes are immediately flushed to the underlying operating system.
64 65 66 67 68 |
# File 'lib/logging/appenders/io.rb', line 64 def reopen super @io.sync = true if @io.respond_to? :sync= self end |