diff --git a/lib/geocoder.rb b/lib/geocoder.rb
index 3dd4203c84e9e74f5d05847b2a94922871f14adb..8c4d2b8ce5122ce19265e7a8891739619571f028 100644
--- a/lib/geocoder.rb
+++ b/lib/geocoder.rb
@@ -1,4 +1,5 @@
 require "geocoder/configuration"
+require "geocoder/logger"
 require "geocoder/query"
 require "geocoder/calculations"
 require "geocoder/exceptions"
diff --git a/lib/geocoder/logger.rb b/lib/geocoder/logger.rb
index 79120185be787c343c38e2189cb09c9abbeb15be..c39c513984aaa6f1f3cabdf2dd51de12186726da 100644
--- a/lib/geocoder/logger.rb
+++ b/lib/geocoder/logger.rb
@@ -10,15 +10,15 @@ module Geocoder
     include Singleton
 
     SEVERITY = {
-      debug: Logger::Severity::DEBUG,
-      info: Logger::Severity::INFO,
-      warn: Logger::Severity::WARN,
-      error: Logger::Severity::ERROR,
-      fatal: Logger::Severity::FATAL
+      debug: ::Logger::DEBUG,
+      info: ::Logger::INFO,
+      warn: ::Logger::WARN,
+      error: ::Logger::ERROR,
+      fatal: ::Logger::FATAL
     }
 
     def log(level, message)
-      logger = config[:logger]
+      logger = Geocoder.config[:logger]
       return true unless logger && valid_level?(level)
 
       if logger == :default
@@ -44,7 +44,7 @@ module Geocoder
     end
 
     def valid_level?(level)
-      [:debug, :info, :warn, :error, :fatal].includes? level
+      [:debug, :info, :warn, :error, :fatal].include? level
     end
   end
 end
diff --git a/test/unit/logger_test.rb b/test/unit/logger_test.rb
new file mode 100644
index 0000000000000000000000000000000000000000..166dc915a22fd2344f431d60d6dca4a6764e042c
--- /dev/null
+++ b/test/unit/logger_test.rb
@@ -0,0 +1,35 @@
+# encoding: utf-8
+$: << File.join(File.dirname(__FILE__), "..")
+require 'test_helper'
+require 'logger'
+require 'tempfile'
+
+class LoggerTest < GeocoderTestCase
+
+  def setup
+    @tempfile = Tempfile.new("log")
+    @logger = Logger.new(@tempfile.path)
+    Geocoder.configure(logger: @logger)
+  end
+
+  def teardown
+    @logger.close
+    @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
+  end
+
+  def test_set_logger_does_not_log_severity_too_low
+    @logger.level = Logger::ERROR
+    assert_equal true, Geocoder.log(:info, "should not log")
+    assert_equal "", @tempfile.read
+  end
+end