class Logger::LogDevice

def reopen(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: nil)

def reopen(log = nil, shift_age: nil, shift_size: nil, shift_period_suffix: nil, binmode: nil)
  # reopen the same filename if no argument, do nothing for IO
  log ||= @filename if @filename
  @binmode = binmode unless binmode.nil?
  if log
    synchronize do
      if @filename and @dev
        @dev.close rescue nil # close only file opened by Logger
        @filename = nil
      end
      set_dev(log)
      set_file(shift_age, shift_size, shift_period_suffix) if @filename
    end
  end
  self
end