class Watir::Logger

@example Enable full logging

Watir.logger.level = :debug

@example Log to file

Watir.logger.output = 'watir.log'

@example Use logger manually

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

Public Class Methods

new(progname = 'Watir') click to toggle source
# File lib/watir/logger.rb, line 30
def initialize(progname = 'Watir')
  @logger = create_logger($stdout)
  @logger.progname = progname
  @ignored = []
end

Public Instance Methods

deprecate(old, new, reference: '', ids: []) click to toggle source

Marks code as deprecated with replacement.

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

# File lib/watir/logger.rb, line 74
def deprecate(old, new, reference: '', ids: [])
  return if @ignored.include?('deprecations') || (@ignored & ids.map!(&:to_s)).any?

  msg = ids.empty? ? '' : "[#{ids.map(&:inspect).join(', ')}] "
  ref_msg = reference.empty? ? '.' : "; see explanation for this deprecation: #{reference}."
  warn "[DEPRECATION] #{msg}#{old} is deprecated. Use #{new} instead#{ref_msg}"
end
ignore(ids) click to toggle source
# File lib/watir/logger.rb, line 36
def ignore(ids)
  @ignored.concat Array(ids).map(&:to_s)
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/watir/logger.rb, line 64
def io
  @logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
end
output=(io) click to toggle source
# File lib/watir/logger.rb, line 40
def output=(io)
  @logger.reopen(io)
end
selenium=(val) click to toggle source
# File lib/watir/logger.rb, line 82
def selenium=(val)
  Selenium::WebDriver.logger.level = val
end
warn(message, ids: [], &block) click to toggle source

Only log a warn message if it is not set to be ignored.

# File lib/watir/logger.rb, line 47
def warn(message, ids: [], &block)
  msg = ids.empty? ? '' : "[#{ids.map!(&:to_s).map(&:inspect).join(', ')}] "
  msg += message
  @logger.warn(msg, &block) unless (@ignored & ids).any?
end

Private Instance Methods

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

  logger
end