class Lumberjack::Device::DateRollingLogFile

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.

Public Class Methods

new(path, options = {}) click to toggle source

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.

Calls superclass method
# File lib/lumberjack/device/date_rolling_log_file.rb, line 14
def initialize(path, options = {})
  @manual = options[:manual]
  @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

Public Instance Methods

archive_file_suffix() click to toggle source
# File lib/lumberjack/device/date_rolling_log_file.rb, line 26
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?() click to toggle source
# File lib/lumberjack/device/date_rolling_log_file.rb, line 37
def roll_file?
  if @manual
    true
  else
    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
end

Protected Instance Methods

after_roll() click to toggle source
# File lib/lumberjack/device/date_rolling_log_file.rb, line 58
def after_roll
  @file_date = Date.today
end