Class: Logger::LogDevice

Inherits:
Object
  • Object
show all
Defined in:
lib/logger.rb

Defined Under Namespace

Classes: LogDeviceMutex

Constant Summary collapse

SiD =
24 * 60 * 60

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(log = nil, opt = {}) ⇒ LogDevice

Returns a new instance of LogDevice.



481
482
483
484
485
486
487
488
489
490
491
492
493
# File 'lib/logger.rb', line 481

def initialize(log = nil, opt = {})
  @dev = @filename = @shift_age = @shift_size = nil
  @mutex = LogDeviceMutex.new
  if log.respond_to?(:write) and log.respond_to?(:close)
	@dev = log
  else
	@dev = open_logfile(log)
	@dev.sync = true
	@filename = log
	@shift_age = opt[:shift_age] || 7
	@shift_size = opt[:shift_size] || 1048576
  end
end

Instance Attribute Details

#devObject (readonly)

Returns the value of attribute dev



474
475
476
# File 'lib/logger.rb', line 474

def dev
  @dev
end

#filenameObject (readonly)

Returns the value of attribute filename



475
476
477
# File 'lib/logger.rb', line 475

def filename
  @filename
end

Instance Method Details

#closeObject



508
509
510
511
512
# File 'lib/logger.rb', line 508

def close
  @mutex.synchronize do
    @dev.close
  end
end

#write(message) ⇒ Object



495
496
497
498
499
500
501
502
503
504
505
506
# File 'lib/logger.rb', line 495

def write(message)
  @mutex.synchronize do
    if @shift_age and @dev.respond_to?(:stat)
      begin
        check_shift_log
      rescue
        raise Logger::ShiftingError.new("Shifting failed. #{$!}")
      end
    end
    @dev.write(message)
  end
end