Class: Logger::LogDevice (Ruby 2.7.2)
Description: Class : Logger::LogDevice - Ruby 2.7.2

### Home Classes Methods

### In Files

- logger/log_device.rb

### Parent

Object

### Methods

- ::new
- #close
- #reopen
- #write

### Included Modules

- Logger::Period
- MonitorMixin

### Class/Module Index

Quicksearch

- Logger
- Logger::Formatter
- Logger::LogDevice
- Logger::Period
- Logger::Severity

No matching classes.

# Logger::LogDevice

Device used for logging messages.

### Attributes

dev[R]
filename[R]

### Public Class Methods

new(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: false) click to toggle source

                   # File logger/log_device.rb, line 14
    def initialize(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: false)
      @dev = @filename = @shift_age = @shift_size = @shift_period_suffix = nil
      @binmode = binmode
      mon_initialize
      set_dev(log)
      if @filename
        @shift_age = shift_age || 7
        @shift_size = shift_size || 1048576
        @shift_period_suffix = shift_period_suffix || '%Y%m%d'

        unless @shift_age.is_a?(Integer)
          base_time = @dev.respond_to?(:stat) ? @dev.stat.mtime : Time.now
          @next_rotate_time = next_rotate_time(base_time, @shift_age)
        end
      end
    end

### Public Instance Methods

close() click to toggle source

                   # File logger/log_device.rb, line 52
    def close
      begin
        synchronize do
          @dev.close rescue nil
        end
      rescue Exception
        @dev.close rescue nil
      end
    end

reopen(log = nil) click to toggle source

                   # File logger/log_device.rb, line 62
    def reopen(log = nil)
      # reopen the same filename if no argument, do nothing for IO
      log ||= @filename if @filename
      if log
        synchronize do
          if @filename and @dev
            @dev.close rescue nil # close only file opened by Logger
            @filename = nil
          end
          set_dev(log)
        end
      end
      self
    end

write(message) click to toggle source

                   # File logger/log_device.rb, line 31
    def write(message)
      begin
        synchronize do
          if @shift_age and @dev.respond_to?(:stat)
            begin
              check_shift_log
            rescue
              warn("log shifting failed. #{$!}")
            end
          end
          begin
            @dev.write(message)
          rescue
            warn("log writing failed. #{$!}")
          end
        end
      rescue Exception => ignored
        warn("log writing failed. #{ignored}")
      end
    end