Class: ProcessSafeLogger::LogDevice

Inherits:
Logger::LogDevice
  • Object
show all
Defined in:
lib/process_safe_logger.rb

Instance Method Summary collapse

Instance Method Details

#add_log_header(file) ⇒ Object

Override as my patch



44
45
46
47
48
# File 'lib/process_safe_logger.rb', line 44

def add_log_header(file)
  file.write(
    "# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
  ) if file.size == 0
end

#check_shift_logObject

Override as my patch



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/process_safe_logger.rb', line 51

def check_shift_log
  if @shift_age.is_a?(Integer)
    # Note: always returns false if '0'.
    if @filename && (@shift_age > 0) && (@dev.stat.size > @shift_size)
      lock_shift_log { shift_log_age }
    end
  else
    now = Time.now
    period_end = previous_period_end(now)
    if @dev.stat.mtime <= period_end
      lock_shift_log { shift_log_period(period_end) }
    end
  end
end

#create_logfile(filename) ⇒ Object

Override as my patch



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/process_safe_logger.rb', line 28

def create_logfile(filename)
  begin
    logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT | File::EXCL))
    logdev.flock(File::LOCK_EX)
    logdev.sync = true
    add_log_header(logdev)
    logdev.flock(File::LOCK_UN)
  rescue Errno::EEXIST
    # file is created by another process
    logdev = open_logfile(filename)
    logdev.sync = true
  end
  logdev
end

#lock_shift_logObject



68
69
70
# File 'lib/process_safe_logger.rb', line 68

def lock_shift_log
  yield
end

#open_logfile(filename) ⇒ Object

Override as my patch



19
20
21
22
23
24
25
# File 'lib/process_safe_logger.rb', line 19

def open_logfile(filename)
  begin
    open(filename, (File::WRONLY | File::APPEND))
  rescue Errno::ENOENT
    create_logfile(filename)
  end
end