Class: Lumberjack::Device

Inherits:
Object
  • Object
show all
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.

Direct Known Subclasses

Multi, Null, Writer

Defined Under Namespace

Classes: DateRollingLogFile, LogFile, Multi, Null, RollingLogFile, SizeRollingLogFile, Writer

Instance Method Summary collapse

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

#closeObject

Subclasses may implement this method to close the device.



21
22
23
# File 'lib/lumberjack/device.rb', line 21

def close
  flush
end

#datetime_formatObject

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

#flushObject

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.

Raises:

  • (NotImplementedError)


16
17
18
# File 'lib/lumberjack/device.rb', line 16

def write(entry)
  raise NotImplementedError
end