This is an Arrow::Logger::Outputter that writes to an IO object.
Create a new Arrow::Logger::FileOutputter object. The io argument can be an IO or StringIO object, in which case output is sent to it directly, a String, in which case it is used as the first argument to File.open, or an Integer file descriptor, in which case a new IO object is created which appends to the file handle matching that descriptor.
# File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 51
51: def initialize( uri, description=DefaultDescription, format=DefaultFormat )
52: if uri.hierarchical?
53: @io = File.open( uri.path, File::WRONLY|File::CREAT )
54: else
55: case uri.opaque
56: when /(std|def)err/i
57: @io = $deferr
58: when /(std|def)out/i
59: @io = $defout
60: when /^(\d+)$/
61: @io = IO.for_fd( Integer($1), "w" )
62: else
63: raise "Unrecognized log URI '#{uri}'"
64: end
65: end
66:
67: super
68: end
Write the given level, name, frame, and msg to the logfile.
# File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 80
80: def write( time, level, name, frame, msg )
81: if block_given?
82: super
83: else
84: super {|msg| @io.puts(msg) }
85: end
86: end
Returns a String which should be included in the implementation-specific part of the object‘s inspection String.
# File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 95
95: def inspection_details
96: io_desc =
97: case @io
98: when $stderr
99: 'STDERR'
100: when $stdout
101: 'STDOUT'
102: when StringIO
103: '(StringIO 0x%0x)' % [ @io.object_id * 2 ]
104: else
105: '(IO: fd %d)' % [ @io.fileno ]
106: end
107:
108: return [ super, io_desc ].join(', ')
109: end
--- SEC00068
--- ""
---
- name: io
rw: RW
a_desc: |+
The filehandle open to the logfile
---
- methods:
- visibility: public
aref: M000196
name: new
sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 51</span>\n\
51: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">initialize</span>( <span class=\"ruby-identifier\">uri</span>, <span class=\"ruby-identifier\">description</span>=<span class=\"ruby-constant\">DefaultDescription</span>, <span class=\"ruby-identifier\">format</span>=<span class=\"ruby-constant\">DefaultFormat</span> )\n\
52: <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">uri</span>.<span class=\"ruby-identifier\">hierarchical?</span>\n\
53: <span class=\"ruby-ivar\">@io</span> = <span class=\"ruby-constant\">File</span>.<span class=\"ruby-identifier\">open</span>( <span class=\"ruby-identifier\">uri</span>.<span class=\"ruby-identifier\">path</span>, <span class=\"ruby-constant\">File</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">WRONLY</span><span class=\"ruby-operator\">|</span><span class=\"ruby-constant\">File</span><span class=\"ruby-operator\">::</span><span class=\"ruby-constant\">CREAT</span> )\n\
54: <span class=\"ruby-keyword kw\">else</span>\n\
55: <span class=\"ruby-keyword kw\">case</span> <span class=\"ruby-identifier\">uri</span>.<span class=\"ruby-identifier\">opaque</span>\n\
56: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-regexp re\">/(std|def)err/i</span>\n\
57: <span class=\"ruby-ivar\">@io</span> = <span class=\"ruby-identifier\">$deferr</span>\n\
58: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-regexp re\">/(std|def)out/i</span>\n\
59: <span class=\"ruby-ivar\">@io</span> = <span class=\"ruby-identifier\">$defout</span>\n\
60: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-regexp re\">/^(\\d+)$/</span>\n\
61: <span class=\"ruby-ivar\">@io</span> = <span class=\"ruby-constant\">IO</span>.<span class=\"ruby-identifier\">for_fd</span>( <span class=\"ruby-constant\">Integer</span>(<span class=\"ruby-identifier\">$1</span>), <span class=\"ruby-value str\">"w"</span> )\n\
62: <span class=\"ruby-keyword kw\">else</span>\n\
63: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-node\">"Unrecognized log URI '#{uri}'"</span>\n\
64: <span class=\"ruby-keyword kw\">end</span>\n\
65: <span class=\"ruby-keyword kw\">end</span>\n\
66: \n\
67: <span class=\"ruby-keyword kw\">super</span>\n\
68: <span class=\"ruby-keyword kw\">end</span>"
m_desc: |-
<p>
Create a <a href="FileOutputter.html#M000196">new</a> <a
href="FileOutputter.html">Arrow::Logger::FileOutputter</a> object. The
<tt>io</tt> argument can be an IO or StringIO object, in which case output
is sent to it directly, a String, in which case it is used as the first
argument to File.open, or an <a href="../../Integer.html">Integer</a> file
descriptor, in which case a <a href="FileOutputter.html#M000196">new</a> IO
object is created which appends to the file handle matching that
descriptor.
</p>
params: ( uri, description=DefaultDescription, format=DefaultFormat )
category: Class
type: Public
- methods:
- visibility: public
aref: M000197
name: write
sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 80</span>\n\
80: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">write</span>( <span class=\"ruby-identifier\">time</span>, <span class=\"ruby-identifier\">level</span>, <span class=\"ruby-identifier\">name</span>, <span class=\"ruby-identifier\">frame</span>, <span class=\"ruby-identifier\">msg</span> )\n\
81: <span class=\"ruby-keyword kw\">if</span> <span class=\"ruby-identifier\">block_given?</span>\n\
82: <span class=\"ruby-keyword kw\">super</span>\n\
83: <span class=\"ruby-keyword kw\">else</span>\n\
84: <span class=\"ruby-keyword kw\">super</span> {<span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">msg</span><span class=\"ruby-operator\">|</span> <span class=\"ruby-ivar\">@io</span>.<span class=\"ruby-identifier\">puts</span>(<span class=\"ruby-identifier\">msg</span>) }\n\
85: <span class=\"ruby-keyword kw\">end</span>\n\
86: <span class=\"ruby-keyword kw\">end</span>"
m_desc: |-
<p>
Write the given <tt>level</tt>, <tt>name</tt>, <tt>frame</tt>, and
<tt>msg</tt> to the logfile.
</p>
params: ( time, level, name, frame, msg )
category: Instance
type: Public
- methods:
- visibility: protected
aref: M000198
name: inspection_details
sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/logger/fileoutputter.rb, line 95</span>\n 95: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">inspection_details</span>\n 96: <span class=\"ruby-identifier\">io_desc</span> = \n 97: <span class=\"ruby-keyword kw\">case</span> <span class=\"ruby-ivar\">@io</span>\n 98: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">$stderr</span>\n 99: <span class=\"ruby-value str\">'STDERR'</span>\n\
100: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-identifier\">$stdout</span>\n\
101: <span class=\"ruby-value str\">'STDOUT'</span>\n\
102: <span class=\"ruby-keyword kw\">when</span> <span class=\"ruby-constant\">StringIO</span>\n\
103: <span class=\"ruby-value str\">'(StringIO 0x%0x)'</span> <span class=\"ruby-operator\">%</span> [ <span class=\"ruby-ivar\">@io</span>.<span class=\"ruby-identifier\">object_id</span> <span class=\"ruby-operator\">*</span> <span class=\"ruby-value\">2</span> ]\n\
104: <span class=\"ruby-keyword kw\">else</span>\n\
105: <span class=\"ruby-value str\">'(IO: fd %d)'</span> <span class=\"ruby-operator\">%</span> [ <span class=\"ruby-ivar\">@io</span>.<span class=\"ruby-identifier\">fileno</span> ]\n\
106: <span class=\"ruby-keyword kw\">end</span>\n\
107: \n\
108: <span class=\"ruby-keyword kw\">return</span> [ <span class=\"ruby-keyword kw\">super</span>, <span class=\"ruby-identifier\">io_desc</span> ].<span class=\"ruby-identifier\">join</span>(<span class=\"ruby-value str\">', '</span>)\n\
109: <span class=\"ruby-keyword kw\">end</span>"
m_desc: |-
<p>
Returns a String which should be included in the implementation-specific
part of the object‘s inspection String.
</p>
params: ()
category: Instance
type: Protected
---
---
- name: SVNRev
desc: |+
SVN Revision
value: "%q$Rev: 437 $"
- name: SVNId
desc: |+
SVN Id
value: "%q$Id: fileoutputter.rb 437 2008-03-28 00:49:20Z deveiant $"
- name: DefaultDescription
desc: |+
The default description
value: ""File Outputter""
- name: DefaultFormat
desc: |+
The default format (copied from the superclass)
value: Arrow::Logger::Outputter::DefaultFormat
Generated with the Darkfish Rdoc Generator.