Class: Logging::Appenders::File

### Home Classes Methods

### In Files

- lib/logging/appenders/file.rb

### Parent

Logging::Appenders::IO

### Methods

- ::assert_valid_logfile
- ::new
- #filename
- #reopen

### Files

- History.txt

### Class/Module Index

Quicksearch

- Logging
- Logging::Appender
- Logging::Appenders
- Logging::Appenders::Buffering
- Logging::Appenders::File
- Logging::Appenders::IO
- Logging::Appenders::RollingFile
- Logging::Appenders::RollingFile::Roller
- Logging::Appenders::Stderr
- Logging::Appenders::Stdout
- Logging::Appenders::StringIo
- Logging::Appenders::Syslog
- Logging::ColorScheme
- Logging::Filter
- Logging::Filters
- Logging::Filters::Level
- Logging::Layout
- Logging::Layouts
- Logging::Layouts::Basic
- Logging::Layouts::Parseable
- Logging::Layouts::Pattern
- Logging::Logger
- Logging::MappedDiagnosticContext
- Logging::NestedDiagnosticContext
- Logging::Proxy
- Logging::RailsCompat
- Logging::Repository
- Logging::Repository::Singleton
- Logging::RootLogger
- RSpec
- RSpec::Core
- RSpec::Core::Configuration
- RSpec::LoggingHelper
- RSpec::LoggingHelper
- Spec
- Spec::Runner
- Spec::Runner::Configuration
- Object
- Object::LoggingHelper
- File
- FileUtils
- Module
- ReentrantMutex
- String

No matching classes.

# Logging::Appenders::File

This class provides an Appender that can write to a File.

### Public Class Methods

assert_valid_logfile( filename ) => true click to toggle source

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.

    # File lib/logging/appenders/file.rb, line 25
    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

new( name, :filename => 'file' ) click to toggle source
new( name, :filename => 'file', :truncate => true )
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 appended to the file.

    # File lib/logging/appenders/file.rb, line 49
    def initialize( name, opts = {} )
      @fn = opts.fetch(:filename, name)
      raise ArgumentError, 'no filename was given' if @fn.nil?

      @fn = ::File.expand_path(@fn)
      self.class.assert_valid_logfile(@fn)
      @mode = opts.fetch(:truncate, false) ? 'w' : 'a'

      self.encoding = opts.fetch(:encoding, self.encoding)
      @mode = "#{@mode}:#{self.encoding}" if self.encoding

      super(name, ::File.new(@fn, @mode), opts)
    end

### Public Instance Methods

filename() click to toggle source

Returns the path to the logfile.

    # File lib/logging/appenders/file.rb, line 65
    def filename() @fn.dup end

reopen() click to toggle source

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.

    # File lib/logging/appenders/file.rb, line 71
    def reopen
      @mutex.synchronize {
        if defined? @io and @io
          flush
          @io.close rescue nil
        end
        @io = ::File.new(@fn, @mode)
      }
      super
      self
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.