Class: Lumberjack::Device::SizeRollingLogFile

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

Overview

This is a log device that appends entries to a file and rolls the file when it reaches a specified size threshold. When a file is rolled, it will have an number extension appended to the file name. For example, if the log file is named production.log, the first time it is rolled it will be renamed production.log.1, then production.log.2, etc.

Constant Summary

Constants inherited from LogFile

LogFile::EXTERNAL_ENCODING

Constants inherited from Writer

Writer::DEFAULT_ADDITIONAL_LINES_TEMPLATE, Writer::DEFAULT_FIRST_LINE_TEMPLATE

Instance Attribute Summary collapse

Attributes inherited from RollingLogFile

#keep, #path

Attributes inherited from LogFile

#path

Attributes inherited from Writer

#buffer_size

Instance Method Summary collapse

Methods inherited from RollingLogFile

#roll_file!

Methods inherited from LogFile

#reopen

Methods inherited from Writer

#close, #datetime_format, #datetime_format=, #flush, #write

Methods inherited from Lumberjack::Device

#cleanup_files!, #close, #datetime_format, #datetime_format=, #do_once, #flush, #reopen, #write

Constructor Details

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

Create an new log device to the specified file. The maximum size of the log file is specified with the :max_size option. The unit can also be specified: “32K”, “100M”, “2G” are all valid.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/lumberjack/device/size_rolling_log_file.rb', line 14

def initialize(path, options = {})
  @manual = options[:manual]
  @max_size = options[:max_size]
  if @max_size.is_a?(String)
    if @max_size.match(/^(\d+(\.\d+)?)([KMG])?$/i)
      @max_size = $~[1].to_f
      units = $~[3].to_s.upcase
      case units
      when "K"
        @max_size *= 1024
      when "M"
        @max_size *= 1024 ** 2
      when "G"
        @max_size *= 1024 ** 3
      end
      @max_size = @max_size.round
    else
      raise ArgumentError.new("illegal value for :max_size (#{@max_size})")
    end
  end
  
  super
end

Instance Attribute Details

#max_sizeObject (readonly)

Returns the value of attribute max_size.



10
11
12
# File 'lib/lumberjack/device/size_rolling_log_file.rb', line 10

def max_size
  @max_size
end

Instance Method Details

#archive_file_suffixObject



38
39
40
# File 'lib/lumberjack/device/size_rolling_log_file.rb', line 38

def archive_file_suffix
  next_archive_number.to_s
end

#roll_file?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
# File 'lib/lumberjack/device/size_rolling_log_file.rb', line 42

def roll_file?
  @manual || stream.stat.size > @max_size
rescue SystemCallError
  false
end