Class: Selenium::WebDriver::Logger

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Logger::Severity
Defined in:
lib/selenium/webdriver/common/logger.rb

Overview

Examples:

Enable full logging

Selenium::WebDriver.logger.level = :debug

Log to file

Selenium::WebDriver.logger.output = 'selenium.log'

Use logger manually

Selenium::WebDriver.logger.info('This is info message')
Selenium::WebDriver.logger.warn('This is warning message')

Instance Method Summary collapse

Constructor Details

#initializeLogger

Returns a new instance of Logger.



47
48
49
50
51
52
53
54
# File 'lib/selenium/webdriver/common/logger.rb', line 47

def initialize
  @logger = ::Logger.new($stdout)
  @logger.progname = 'Selenium'
  @logger.level = ($DEBUG ? DEBUG : WARN)
  @logger.formatter = proc do |severity, time, progname, msg|
    "#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
  end
end

Instance Method Details

#ioObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

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.



100
101
102
103
104
105
106
# File 'lib/selenium/webdriver/common/logger.rb', line 100

def io
  if debug?
    @logger.instance_variable_get(:@logdev).instance_variable_get(:@dev)
  else
    File.new(Platform.null_device, 'w')
  end
end

#level=(severity) ⇒ Object

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



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/selenium/webdriver/common/logger.rb', line 65

def level=(severity)
  if severity.is_a?(Integer)
    @logger.level = severity
  else
    _severity = severity.to_s.downcase
    case _severity
      when 'debug'.freeze
        @logger.level = DEBUG
      when 'info'.freeze
        @logger.level = INFO
      when 'warn'.freeze
        @logger.level = WARN
      when 'error'.freeze
        @logger.level = ERROR
      when 'fatal'.freeze
        @logger.level = FATAL
      when 'unknown'.freeze
        @logger.level = UNKNOWN
      else
        raise ArgumentError, "invalid log level: #{severity}"
    end
  end
end

#output=(io) ⇒ Object



56
57
58
# File 'lib/selenium/webdriver/common/logger.rb', line 56

def output=(io)
  @logger.reopen(io)
end