@@ -17,20 +17,20 @@ module Logger
1717 # @param [Hash{Symbol => Object}] options
1818 # @option options [Logger, #<<] :logger
1919 # @return [Logger, #write, #<<]
20- def logger ( **options )
20+ def logger ( logger : nil , **options )
2121 # Guard against undefined instance variables, which may be a warning if used.
22- @logger = nil unless instance_variable_defined? ( :@logger ) || frozen?
23- @options = nil unless instance_variable_defined? ( :@options ) || frozen?
24- logger = options . fetch ( :logger , @logger )
25- logger = @options [ :logger ] if logger . nil? && @options
22+ @options = { } unless instance_variable_defined? ( :@options ) || frozen?
23+ logger ||= @logger if instance_variable_defined? ( :@logger )
24+ logger = @options [ :logger ] if logger . nil? && instance_variable_defined? ( :@options ) && @options
2625 if logger . nil?
2726 # Unless otherwise specified, use $stderr
28- logger = ( @options || options ) [ :logger ] = IOWrapper . new ( $stderr)
27+ logger = IOWrapper . new ( $stderr)
2928
3029 # Reset log_statistics so that it's not inherited across different instances
3130 logger . log_statistics . clear if logger . respond_to? ( :log_statistics )
3231 end
33- logger = ( @options || options ) [ :logger ] = ::Logger . new ( ::File . open ( ::File ::NULL , "w" ) ) unless logger # Incase false was used, which is frozen
32+ logger = ::Logger . new ( ::File . open ( ::File ::NULL , "w" ) ) unless logger # Incase false was used, which is frozen
33+ @options [ :logger ] ||= logger if instance_variable_defined? ( :@options )
3434 logger . extend ( LoggerBehavior ) unless logger . is_a? ( LoggerBehavior )
3535 logger
3636 end
0 commit comments