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