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
110 111 112 113 114 115 116 117 118 119 |
# File 'lib/lumberjack/device/rolling_log_file.rb', line 110 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
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/lumberjack/device/rolling_log_file.rb', line 121 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 = begin file.lstat rescue nil end # 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 begin file.flock(File::LOCK_UN) rescue nil end 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 |