Class: ProcessSafeLogger::LogDevice
- Inherits:
-
Logger::LogDevice
- Object
- Logger::LogDevice
- ProcessSafeLogger::LogDevice
- Defined in:
- lib/process_safe_logger.rb
Instance Method Summary collapse
-
#add_log_header(file) ⇒ Object
Override as my patch.
-
#check_shift_log ⇒ Object
Override as my patch.
-
#create_logfile(filename) ⇒ Object
Override as my patch.
- #lock_shift_log ⇒ Object
-
#open_logfile(filename) ⇒ Object
Override as my patch.
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_log ⇒ Object
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_log ⇒ Object
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 |