class Lumberjack::Device

This is an abstract class for logging devices. Subclasses must implement the write method and may implement the close and flush methods if applicable.

Public Instance Methods

cleanup_files!() click to toggle source
# File lib/lumberjack/device/rolling_log_file.rb, line 83
def cleanup_files!
  if keep
    files = Dir.glob("#{path}.*").collect{|f| [f, File.ctime(f)]}.sort{|a,b| b.last <=> a.last}.collect{|a| a.first}
    if files.size > keep
      files[keep, files.length].each do |f|
        File.delete(f)
      end
    end
  end
end
close() click to toggle source

Subclasses may implement this method to close the device.

# File lib/lumberjack/device.rb, line 18
def close
  flush
end
do_once(file) { || ... } click to toggle source
# File lib/lumberjack/device/rolling_log_file.rb, line 94
def do_once(file)
  begin
    file.flock(File::LOCK_EX)
  rescue SystemCallError
    # Most likely can't lock file because the stream is closed
    return
  end
  begin
    verify = file.lstat rescue nil
    # Execute only if the file we locked is still the same one that needed to be rolled
    yield if verify && verify.ino == @file_inode && verify.size > 0
  ensure
    file.flock(File::LOCK_UN) rescue nil
  end
end
flush() click to toggle source

Subclasses may implement this method to flush any buffers used by the device.

# File lib/lumberjack/device.rb, line 23
def flush
end
write(entry) click to toggle source

Subclasses must implement this method to write a LogEntry.

# File lib/lumberjack/device.rb, line 13
def write(entry)
  raise NotImplementedError
end