1
1
# frozen_string_literal: true
2
2
3
- require 'forwardable'
4
- require 'logger'
5
-
6
- # Code adapted from Selenium Implementation
7
- # https://github.com/SeleniumHQ/selenium/blob/master/rb/lib/selenium/webdriver/common/logger.rb
8
-
9
3
module Webdrivers
10
4
#
11
5
# @example Enable full logging
@@ -18,94 +12,9 @@ module Webdrivers
18
12
# Webdrivers.logger.info('This is info message')
19
13
# Webdrivers.logger.warn('This is warning message')
20
14
#
21
- class Logger
22
- extend Forwardable
23
- include ::Logger ::Severity
24
-
25
- def_delegators :@logger , :debug , :debug? ,
26
- :info , :info? ,
27
- :warn , :warn? ,
28
- :error , :error? ,
29
- :fatal , :fatal? ,
30
- :level
31
-
15
+ class Logger < Selenium ::WebDriver ::Logger
32
16
def initialize
33
- @logger = create_logger ( $stdout)
34
- end
35
-
36
- def output = ( io )
37
- # `Logger#reopen` was added in Ruby 2.3
38
- if @logger . respond_to? ( :reopen )
39
- @logger . reopen ( io )
40
- else
41
- @logger = create_logger ( io )
42
- end
43
- end
44
-
45
- #
46
- # For Ruby < 2.3 compatibility
47
- # Based on https://github.com/ruby/ruby/blob/ruby_2_3/lib/logger.rb#L250
48
- #
49
-
50
- def level = ( severity )
51
- if severity . is_a? ( Integer )
52
- @logger . level = severity
53
- else
54
- case severity . to_s . downcase
55
- when 'debug'
56
- @logger . level = DEBUG
57
- when 'info'
58
- @logger . level = INFO
59
- when 'warn'
60
- @logger . level = WARN
61
- when 'error'
62
- @logger . level = ERROR
63
- when 'fatal'
64
- @logger . level = FATAL
65
- when 'unknown'
66
- @logger . level = UNKNOWN
67
- else
68
- raise ArgumentError , "invalid log level: #{ severity } "
69
- end
70
- end
71
- end
72
-
73
- #
74
- # Returns IO object used by logger internally.
75
- #
76
- # Normally, we would have never needed it, but we want to
77
- # use it as IO object for all child processes to ensure their
78
- # output is redirected there.
79
- #
80
- # It is only used in debug level, in other cases output is suppressed.
81
- #
82
- # @api private
83
- #
84
- def io
85
- @logger . instance_variable_get ( :@logdev ) . instance_variable_get ( :@dev )
86
- end
87
-
88
- #
89
- # Marks code as deprecated with replacement.
90
- #
91
- # @param [String] old
92
- # @param [String] new
93
- #
94
- def deprecate ( old , new )
95
- warn "[DEPRECATION] #{ old } is deprecated. Use #{ new } instead."
96
- end
97
-
98
- private
99
-
100
- def create_logger ( output )
101
- logger = ::Logger . new ( output )
102
- logger . progname = 'Webdrivers'
103
- logger . level = ( $DEBUG ? DEBUG : WARN )
104
- logger . formatter = proc do |severity , time , progname , msg |
105
- "#{ time . strftime ( '%F %T' ) } #{ severity } #{ progname } #{ msg } \n "
106
- end
107
-
108
- logger
17
+ super ( 'Webdrivers' )
109
18
end
110
19
end
111
20
end
0 commit comments