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.
IOOutputter needs an IO object to write to.
# File lib/log4r/outputter/iooutputter.rb, line 18 def initialize(_name, _out, hash={}) super(_name, hash) @out = _out end
Close the IO and sets level to OFF
# File lib/log4r/outputter/iooutputter.rb, line 28 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
# File lib/log4r/outputter/iooutputter.rb, line 23 def closed? @out.closed? end
perform the write
# File lib/log4r/outputter/iooutputter.rb, line 40 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