Skip to content
Snippets Groups Projects
Commit 8f3e4df5 authored by Thu Trang Pham's avatar Thu Trang Pham
Browse files

ensure that logger respond_to? :add before calling add

parent a160e6f2
No related branches found
No related tags found
No related merge requests found
......@@ -99,7 +99,7 @@ module Geocoder
@data[:cache] = nil # cache object (must respond to #[], #[]=, and #keys)
@data[:cache_prefix] = "geocoder:" # prefix (string) to use for all cache keys
@data[:basic_auth] = {} # user and password for basic auth ({:user => "user", :password => "password"})
@data[:logger] = :default # nil, default, or Logger instance
@data[:logger] = :kernel # :kernel or Logger instance
# exceptions that should not be rescued by default
# (if you want to implement custom error handling);
......
......@@ -19,12 +19,15 @@ module Geocoder
def log(level, message)
logger = Geocoder.config[:logger]
return true unless logger && valid_level?(level)
return true unless valid_level?(level)
if logger == :default
if logger == :kernel
kernel_log(level, message)
elsif logger.respond_to? :add
logger.add(SEVERITY[level], message)
else
logger.log(SEVERITY[level], message)
raise Geocoder::ConfigurationError, "Please specify valid logger for Geocoder. " +
"Logger specified must be :kernel or must respond to `add(level, message)`."
end
end
......
......@@ -17,11 +17,6 @@ class LoggerTest < GeocoderTestCase
@tempfile.close
end
def test_nil_logger_does_not_log
Geocoder.configure(logger: nil)
assert_equal true, Geocoder.log(:warn, "should not log")
end
def test_set_logger_logs
Geocoder.log(:warn, "should log")
assert_equal "should log\n", @tempfile.read
......@@ -32,4 +27,11 @@ class LoggerTest < GeocoderTestCase
assert_equal true, Geocoder.log(:info, "should not log")
assert_equal "", @tempfile.read
end
def test_raise_configruation_error_for_invalid_logger
Geocoder.configure(logger: {})
assert_raises Geocoder::ConfigurationError do
Geocoder.log(:info, "should raise error")
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment