Class: Lumberjack::Device::DateRollingLogFile

Inherits:
RollingLogFile show all
Defined in:
lib/lumberjack/device/date_rolling_log_file.rb

Overview

This log device will append entries to a file and roll the file periodically by date. Files are rolled at midnight and can be rolled daily, weekly, or monthly. Archive file names will have the date appended to them in the format “.YYYY-MM-DD” for daily, “.week-of-YYYY-MM-DD” for weekly and “.YYYY-MM” for monthly. It is not guaranteed that log messages will break exactly on the roll period as buffered entries will always be written to the same file.

Constant Summary

Constants inherited from Writer

Writer::DEFAULT_ADDITIONAL_LINES_TEMPLATE, Writer::DEFAULT_FIRST_LINE_TEMPLATE

Instance Attribute Summary

Attributes inherited from RollingLogFile

#keep, #path

Attributes inherited from LogFile

#path

Attributes inherited from Writer

#buffer_size

Instance Method Summary collapse

Methods inherited from Writer

#close, #flush, #write

Methods inherited from Lumberjack::Device

#cleanup_files!, #close, #do_once, #flush, #write

Constructor Details

#initialize(path, options = {}) ⇒ DateRollingLogFile

Create a new logging device to the specified file. The period to roll the file is specified with the :roll option which may contain a value of :daily, :weekly, or :monthly.



14
15
16
17
18
19
20
21
22
23
# File 'lib/lumberjack/device/date_rolling_log_file.rb', line 14

def initialize(path, options = {})
  @file_date = Date.today
  if options[:roll] && options[:roll].to_s.match(/(daily)|(weekly)|(monthly)/i)
    @roll_period = $~[0].downcase.to_sym
    options.delete(:roll)
  else
    raise ArgumentError.new("illegal value for :roll (#{options[:roll].inspect})")
  end
  super
end

Instance Method Details

#archive_file_suffixObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/lumberjack/device/date_rolling_log_file.rb', line 25

def archive_file_suffix
  case @roll_period
  when :weekly
    "#{@file_date.strftime('week-of-%Y-%m-%d')}"
  when :monthly
    "#{@file_date.strftime('%Y-%m')}"
  else
    "#{@file_date.strftime('%Y-%m-%d')}"
  end
end

#roll_file?Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/lumberjack/device/date_rolling_log_file.rb', line 36

def roll_file?
  date = Date.today
  if date.year > @file_date.year
    true
  elsif @roll_period == :daily && date.yday > @file_date.yday
    true
  elsif @roll_period == :weekly && date.cweek > @file_date.cweek
    true
  elsif @roll_period == :monthly && date.month > @file_date.month
    true
  else
    false
  end
end