class Lumberjack::Device::RollingLogFile
This is an abstract class for a device that appends entries to a file and periodically archives the existing file and starts a one. Subclasses must implement the roll_file? and archive_file_suffix
methods.
The :keep
option can be used to specify a maximum number of rolled log files to keep. Older files will be deleted based on the time they were created. The default is to keep all files.
The :min_roll_check
option can be used to specify the number of seconds between checking the file to determine if it needs to be rolled. The default is to check at most once per second.
Attributes
Public Class Methods
Source
# File lib/lumberjack/device/rolling_log_file.rb, line 18 def initialize(path, options = {}) @path = File.expand_path(path) @keep = options[:keep] super(path, options) @file_inode = stream.lstat.ino rescue nil @@rolls = [] @next_stat_check = Time.now.to_f @min_roll_check = (options[:min_roll_check] || 1.0).to_f end
Lumberjack::Device::LogFile::new
Public Instance Methods
Source
# File lib/lumberjack/device/rolling_log_file.rb, line 30 def archive_file_suffix raise NotImplementedError end
Returns a suffix that will be appended to the file name when it is archived.. The suffix should change after it is time to roll the file. The log file will be renamed when it is rolled.
Source
# File lib/lumberjack/device/rolling_log_file.rb, line 35 def roll_file? raise NotImplementedError end
Return true
if the file should be rolled.
Protected Instance Methods
Source
# File lib/lumberjack/device/rolling_log_file.rb, line 65 def after_roll end
This method will be called after a file has been rolled. Subclasses can implement code to reset the state of the device. This method is thread safe.
Private Instance Methods
Source
# File lib/lumberjack/device/rolling_log_file.rb, line 84 def reopen_file old_stream = stream new_stream = File.open(path, 'a', encoding: EXTERNAL_ENCODING) new_stream.sync = true if buffer_size > 0 @file_inode = new_stream.lstat.ino rescue nil self.stream = new_stream old_stream.close end