Skip to content

Commit c277888

Browse files
committed
[rb] Fix Logger#output= on Ruby < 2.3
1 parent 58d2253 commit c277888

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

rb/lib/selenium/webdriver/common/logger.rb

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,16 @@ class Logger
4545
:level
4646

4747
def initialize
48-
@logger = ::Logger.new($stdout)
49-
@logger.progname = 'Selenium'
50-
@logger.level = ($DEBUG ? DEBUG : WARN)
51-
@logger.formatter = proc do |severity, time, progname, msg|
52-
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
53-
end
48+
@logger = create_logger($stdout)
5449
end
5550

5651
def output=(io)
57-
@logger.reopen(io)
52+
# `Logger#reopen` was added in Ruby 2.3
53+
if @logger.respond_to?(:reopen)
54+
@logger.reopen(io)
55+
else
56+
@logger = create_logger(io)
57+
end
5858
end
5959

6060
#
@@ -66,22 +66,21 @@ def level=(severity)
6666
if severity.is_a?(Integer)
6767
@logger.level = severity
6868
else
69-
_severity = severity.to_s.downcase
70-
case _severity
71-
when 'debug'.freeze
72-
@logger.level = DEBUG
73-
when 'info'.freeze
74-
@logger.level = INFO
75-
when 'warn'.freeze
76-
@logger.level = WARN
77-
when 'error'.freeze
78-
@logger.level = ERROR
79-
when 'fatal'.freeze
80-
@logger.level = FATAL
81-
when 'unknown'.freeze
82-
@logger.level = UNKNOWN
83-
else
84-
raise ArgumentError, "invalid log level: #{severity}"
69+
case severity.to_s.downcase
70+
when 'debug'.freeze
71+
@logger.level = DEBUG
72+
when 'info'.freeze
73+
@logger.level = INFO
74+
when 'warn'.freeze
75+
@logger.level = WARN
76+
when 'error'.freeze
77+
@logger.level = ERROR
78+
when 'fatal'.freeze
79+
@logger.level = FATAL
80+
when 'unknown'.freeze
81+
@logger.level = UNKNOWN
82+
else
83+
raise ArgumentError, "invalid log level: #{severity}"
8584
end
8685
end
8786
end
@@ -104,6 +103,19 @@ def io
104103
File.new(Platform.null_device, 'w')
105104
end
106105
end
106+
107+
private
108+
109+
def create_logger(output)
110+
logger = ::Logger.new(output)
111+
logger.progname = 'Selenium'
112+
logger.level = ($DEBUG ? DEBUG : WARN)
113+
logger.formatter = proc do |severity, time, progname, msg|
114+
"#{time.strftime('%F %T')} #{severity} #{progname} #{msg}\n"
115+
end
116+
117+
logger
118+
end
107119
end # Logger
108120
end # WebDriver
109121
end # Selenium

0 commit comments

Comments
 (0)