class Webdrivers::Logger

@example Enable full logging

Webdrivers.logger.level = :debug

@example Log to file

Webdrivers.logger.output = 'webdrivers.log'

@example Use logger manually

Webdrivers.logger.info('This is info message')
Webdrivers.logger.warn('This is warning message')

Public Class Methods

new() click to toggle source
# File lib/webdrivers/logger.rb, line 32
def initialize
  @logger = create_logger($stdout)
end

Public Instance Methods

deprecate(old, new) click to toggle source

Marks code as deprecated with replacement.

@param [String] old @param [String] new

# File lib/webdrivers/logger.rb, line 94
def deprecate(old, new)
  warn "[DEPRECATION] #{old} is deprecated. Use #{new} instead."
end
io() click to toggle source

Returns IO object used by logger internally.

Normally, we would have never needed it, but we want to use it as IO object for all child processes to ensure their output is redirected there.

It is only used in debug level, in other cases output is suppressed.

@api private

# File lib/webdrivers/logger.rb, line 84
def io
  @logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
end
level=(severity) click to toggle source

For Ruby < 2.3 compatibility Based on github.com/ruby/ruby/blob/ruby_2_3/lib/logger.rb#L250

# File lib/webdrivers/logger.rb, line 50
def level=(severity)
  if severity.is_a?(Integer)
    @logger.level = severity
  else
    case severity.to_s.downcase
    when 'debug'
      @logger.level = DEBUG
    when 'info'
      @logger.level = INFO
    when 'warn'
      @logger.level = WARN
    when 'error'
      @logger.level = ERROR
    when 'fatal'
      @logger.level = FATAL
    when 'unknown'
      @logger.level = UNKNOWN
    else
      raise ArgumentError, "invalid log level: #{severity}"
    end
  end
end
output=(io) click to toggle source
# File lib/webdrivers/logger.rb, line 36
def output=(io)
  # `Logger#reopen` was added in Ruby 2.3
  if @logger.respond_to?(:reopen)
    @logger.reopen(io)
  else
    @logger = create_logger(io)
  end
end

Private Instance Methods

create_logger(output) click to toggle source
# File lib/webdrivers/logger.rb, line 100
def create_logger(output)
  logger = ::Logger.new(output)
  logger.progname = 'Webdrivers'
  logger.level = ($DEBUG ? DEBUG : WARN)
  logger.formatter = proc do |severity, time, progname, msg|
    "#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
  end

  logger
end