diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 121da17..b5b063c 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -351,7 +351,8 @@ function theme_get_setting($setting_name, $theme = NULL) {
       if ($cache[$theme]->get('features.logo')) {
         $logo_path = $cache[$theme]->get('logo.path');
         if ($cache[$theme]->get('logo.use_default')) {
-          $cache[$theme]->set('logo.url', file_create_url($theme_object->getPath() . '/logo.svg'));
+          $logo = \Drupal::theme()->getActiveTheme()->getLogo();
+          $cache[$theme]->set('logo.url', file_create_url($theme_object->getPath() . '/' . $logo));
         }
         elseif ($logo_path) {
           $cache[$theme]->set('logo.url', file_create_url($logo_path));
diff --git a/core/lib/Drupal/Core/Theme/ActiveTheme.php b/core/lib/Drupal/Core/Theme/ActiveTheme.php
index c35afad..e9dca4b 100644
--- a/core/lib/Drupal/Core/Theme/ActiveTheme.php
+++ b/core/lib/Drupal/Core/Theme/ActiveTheme.php
@@ -187,6 +187,27 @@ public function getBaseThemes() {
   }
 
   /**
+   * Gets the default logo to be used by the active theme.
+   *
+   * If the 'id' variable has been set in the active theme's '.info.yml',
+   * use the file specified. If the variable has not been set or is empty
+   * use'logo.svg' as a fallback.
+   *
+   * @return string
+   */
+  public function getLogo() {
+    $logo = $this->getExtension();
+    if (isset($logo->info['logo']) && !empty($logo->info['logo'])) {
+      $logo = $logo->info['logo'];
+    }
+    else {
+      $logo = 'logo.svg';
+    }
+
+    return $logo;
+  }
+
+  /**
    * The regions used by the theme.
    *
    * @return string[]
diff --git a/core/modules/system/src/Tests/Theme/ThemeSettingsTest.php b/core/modules/system/src/Tests/Theme/ThemeSettingsTest.php
index 3ef48d0..01d14b0 100644
--- a/core/modules/system/src/Tests/Theme/ThemeSettingsTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeSettingsTest.php
@@ -65,4 +65,42 @@ function testNoDefaultConfig() {
     $this->assertNotNull(theme_get_setting('features.favicon', $name));
   }
 
+  /**
+  * Tests that the default logo config can be overridden.
+  */
+  public function testLogoConfig() {
+    $theme_handler = $this->container->get('theme_handler');
+    $theme_handler->install(array('test_basetheme'));
+    $theme_handler->setDefault('test_basetheme');
+    $theme = $theme_handler->getTheme('test_basetheme');
+
+    // Test default behaviour.
+    $default = file_create_url($theme->getPath() . '/logo.svg');
+    $this->assertIdentical($default, theme_get_setting('logo.url'));
+
+    $config = $this->config('test_basetheme.settings');
+
+    drupal_static_reset('theme_get_setting');
+
+    $values = [
+      'default_logo' => FALSE,
+      'logo_path' => 'public://logo_with_scheme.png',
+    ];
+    theme_settings_convert_to_config($values, $config)->save();
+
+    // Test filename with scheme.
+    $this->assertIdentical(file_create_url('public://logo_with_scheme.png'), theme_get_setting('logo.url'));
+
+    drupal_static_reset('theme_get_setting');
+
+    $values = [
+      'default_logo' => FALSE,
+      'logo_path' => $theme->getPath() . '/logo_relative_path.gif',
+    ];
+    theme_settings_convert_to_config($values, $config)->save();
+
+    // Test relative path.
+    $this->assertIdentical(file_create_url($theme->getPath() . '/logo_relative_path.gif'), theme_get_setting('logo.url'));
+  }
+
 }
