class SeleniumStatistics::Logger
@example Enable full logging
SeleniumStatistics.logger.level = :debug
@example Log to file
SeleniumStatistics.logger.output = 'watir.log'
@example Use logger manually
SeleniumStatistics.logger.info('This is info message') SeleniumStatistics.logger.warn('This is warning message')
Public Class Methods
new()
click to toggle source
# File lib/selenium_statistics/logger.rb, line 30 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/selenium_statistics/logger.rb, line 92 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/selenium_statistics/logger.rb, line 82 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/selenium_statistics/logger.rb, line 48 def level=(severity) if severity.is_a?(Integer) @logger.level = severity else case severity.to_s.downcase 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)
click to toggle source
# File lib/selenium_statistics/logger.rb, line 34 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/selenium_statistics/logger.rb, line 98 def create_logger(output) logger = ::Logger.new(output) logger.progname = 'SeleniumStatistics' logger.level = ($DEBUG ? DEBUG : WARN) logger.formatter = proc do |severity, time, progname, msg| "#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n" end logger end