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