Class: Lumberjack::Device
- Inherits:
-
Object
- Object
- Lumberjack::Device
- Defined in:
- lib/lumberjack/device.rb,
lib/lumberjack/device/null.rb,
lib/lumberjack/device/multi.rb,
lib/lumberjack/device/writer.rb,
lib/lumberjack/device/log_file.rb,
lib/lumberjack/device/rolling_log_file.rb,
lib/lumberjack/device/date_rolling_log_file.rb,
lib/lumberjack/device/size_rolling_log_file.rb
Overview
This is an abstract class for logging devices. Subclasses must implement the write
method and may implement the close
and flush
methods if applicable.
Defined Under Namespace
Classes: DateRollingLogFile, LogFile, Multi, Null, RollingLogFile, SizeRollingLogFile, Writer
Instance Method Summary collapse
- #cleanup_files! ⇒ Object
-
#close ⇒ Object
Subclasses may implement this method to close the device.
-
#datetime_format ⇒ Object
Subclasses may implement this method to get the format for log timestamps.
-
#datetime_format=(format) ⇒ Object
Subclasses may implement this method to set a format for log timestamps.
- #do_once(file) ⇒ Object
-
#flush ⇒ Object
Subclasses may implement this method to flush any buffers used by the device.
-
#reopen(logdev = nil) ⇒ Object
Subclasses may implement this method to reopen the device.
-
#write(entry) ⇒ Object
Subclasses must implement this method to write a LogEntry.
Instance Method Details
#cleanup_files! ⇒ Object
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/lumberjack/device/rolling_log_file.rb', line 94 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 ⇒ Object
Subclasses may implement this method to close the device.
21 22 23 |
# File 'lib/lumberjack/device.rb', line 21 def close flush end |
#datetime_format ⇒ Object
Subclasses may implement this method to get the format for log timestamps.
35 36 |
# File 'lib/lumberjack/device.rb', line 35 def datetime_format end |
#datetime_format=(format) ⇒ Object
Subclasses may implement this method to set a format for log timestamps.
39 40 |
# File 'lib/lumberjack/device.rb', line 39 def datetime_format=(format) end |
#do_once(file) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/lumberjack/device/rolling_log_file.rb', line 105 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 ⇒ Object
Subclasses may implement this method to flush any buffers used by the device.
31 32 |
# File 'lib/lumberjack/device.rb', line 31 def flush end |
#reopen(logdev = nil) ⇒ Object
Subclasses may implement this method to reopen the device.
26 27 28 |
# File 'lib/lumberjack/device.rb', line 26 def reopen(logdev = nil) flush end |
#write(entry) ⇒ Object
Subclasses must implement this method to write a LogEntry.
16 17 18 |
# File 'lib/lumberjack/device.rb', line 16 def write(entry) raise NotImplementedError end |