Class: Logging::Appenders::File
- Inherits:
-
IO
- Object
- Logging::Appender
- IO
- Logging::Appenders::File
- Defined in:
- lib/gems/logging-0.9.4/lib/logging/appenders/file.rb
Overview
This class provides an Appender that can write to a File.
Instance Attribute Summary
Attributes inherited from Logging::Appender
Class Method Summary collapse
-
.assert_valid_logfile(fn) ⇒ Object
call-seq: File.assert_valid_logfile( filename ) => true.
Instance Method Summary collapse
-
#initialize(name, opts = {}) ⇒ File
constructor
call-seq: File.new( name, :filename => ‘file’ ) File.new( name, :filename => ‘file’, :truncate => true ) File.new( name, :filename => ‘file’, :layout => layout ).
Methods inherited from IO
Methods inherited from Logging::Appender
#<<, [], []=, #append, #close, #closed?, #flush, #inspect, remove, stderr, stdout
Constructor Details
#initialize(name, opts = {}) ⇒ File
call-seq:
File.new( name, :filename => 'file' )
File.new( name, :filename => 'file', :truncate => true )
File.new( name, :filename => 'file', :layout => layout )
Creates a new File Appender that will use the given filename as the logging destination. If the file does not already exist it will be created. If the :truncate option is set to true
then the file will be truncated before writing begins; otherwise, log messages will be appened to the file.
42 43 44 45 46 47 48 49 |
# File 'lib/gems/logging-0.9.4/lib/logging/appenders/file.rb', line 42 def initialize( name, opts = {} ) @fn = opts.getopt(:filename, name) raise ArgumentError, 'no filename was given' if @fn.nil? self.class.assert_valid_logfile(@fn) mode = opts.getopt(:truncate) ? 'w' : 'a' super(name, ::File.new(@fn, mode), opts) end |
Class Method Details
.assert_valid_logfile(fn) ⇒ Object
call-seq:
File.assert_valid_logfile( filename ) => true
Asserts that the given filename can be used as a log file by ensuring that if the file exists it is a regular file and it is writable. If the file does not exist, then the directory is checked to see if it is writable.
An ArgumentError
is raised if any of these assertions fail.
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/gems/logging-0.9.4/lib/logging/appenders/file.rb', line 18 def self.assert_valid_logfile( fn ) if ::File.exist?(fn) if not ::File.file?(fn) raise ArgumentError, "#{fn} is not a regular file" elsif not ::File.writable?(fn) raise ArgumentError, "#{fn} is not writeable" end elsif not ::File.writable?(::File.dirname(fn)) raise ArgumentError, "#{::File.dirname(fn)} is not writable" end true end |