diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index 4795480..8b16e4d 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -119,8 +119,10 @@ function error_displayable($error = NULL) {
  *   %line, severity_level, and backtrace. All the parameters are plain-text,
  *   with the exception of @message, which needs to be an HTML string, and
  *   backtrace, which is a standard PHP backtrace.
- * @param $fatal
- *   TRUE if the error is fatal.
+ * @param bool $fatal
+ *   An error is fatal in case:
+ *     - An exception is thrown and not caught by something else.
+ *     - A recoverable fatal error, which is a fatal error
  */
 function _drupal_log_error($error, $fatal = FALSE) {
   $is_installer = drupal_installation_attempted();
@@ -169,6 +171,12 @@ function _drupal_log_error($error, $fatal = FALSE) {
     }
   }
 
+  // Ensure to log out to error log for fatals, so developers can find the
+  // problems.
+  if ($fatal) {
+    error_log(sprintf('%s: %s in %s on line %d', $error['%type'], $error['@message'], $error['%file'], $error['%line']));
+  }
+
   if (PHP_SAPI === 'cli') {
     if ($fatal) {
       // When called from CLI, simply output a plain text message.
diff --git a/core/modules/config/src/Tests/ConfigInstallProfileUnmetDependenciesTest.php b/core/modules/config/src/Tests/ConfigInstallProfileUnmetDependenciesTest.php
index e7e8f6c..59683af 100644
--- a/core/modules/config/src/Tests/ConfigInstallProfileUnmetDependenciesTest.php
+++ b/core/modules/config/src/Tests/ConfigInstallProfileUnmetDependenciesTest.php
@@ -95,6 +95,7 @@ public function testInstalled() {
     else {
       $this->fail('Expected Drupal\Core\Config\UnmetDependenciesException exception thrown');
     }
+    $this->assertErrorLogged('Configuration objects (system.action.user_block_user_action) provided by user have unmet dependencies in');
   }
 
 }
diff --git a/core/modules/simpletest/src/TestBase.php b/core/modules/simpletest/src/TestBase.php
index 940fcba..27b75df 100644
--- a/core/modules/simpletest/src/TestBase.php
+++ b/core/modules/simpletest/src/TestBase.php
@@ -815,6 +815,43 @@ protected function assertNoErrorsLogged() {
   }
 
   /**
+   * Asserts that a specific error have been logged to the PHP error.log.
+   *
+   * @param string $error_message
+   *   The expected error message.
+   *
+   * @return bool
+   *   TRUE if the assertion succeeded, FALSE otherwise.
+   *
+   * @see TestBase::prepareEnvironment()
+   * @see \Drupal\Core\DrupalKernel::bootConfiguration()
+   */
+  protected function assertErrorLogged($error_message) {
+    $error_log_filename = DRUPAL_ROOT . '/' . $this->siteDirectory . '/error.log';
+    if (!file_exists($error_log_filename)) {
+      $this->error('No error logged yet.');
+    }
+
+    $content = file_get_contents($error_log_filename);
+    debug($content);
+    $rows = explode("\n", $content);
+
+    // We iterate over the rows in order to be able to remove the logged error
+    // afterwards.
+    $found = FALSE;
+    foreach ($rows as $row_index => $row) {
+      if (strpos($content, $error_message) !== FALSE) {
+        $found = TRUE;
+        unset($rows[$row_index]);
+      }
+    }
+
+    file_put_contents($error_log_filename, implode("\n", $rows));
+
+    return $this->assertTrue($found, sprintf('The %s error message was logged.', $error_message));
+  }
+
+  /**
    * Fire an assertion that is always positive.
    *
    * @param $message
diff --git a/core/modules/system/src/Tests/System/ErrorHandlerTest.php b/core/modules/system/src/Tests/System/ErrorHandlerTest.php
index 2cea2b7..be3946b 100644
--- a/core/modules/system/src/Tests/System/ErrorHandlerTest.php
+++ b/core/modules/system/src/Tests/System/ErrorHandlerTest.php
@@ -100,6 +100,7 @@ function testErrorHandler() {
     $this->assertErrorMessage($error_warning);
     $this->assertErrorMessage($error_user_notice);
     $this->assertNoRaw('<pre class="backtrace">', 'Did not find pre element with backtrace class.');
+    $this->assertErrorLogged($fatal_error['!message']);
 
     // Set error reporting to not collect notices.
     $config->set('error_level', ERROR_REPORTING_DISPLAY_SOME)->save();
diff --git a/core/modules/system/src/Tests/System/UncaughtExceptionTest.php b/core/modules/system/src/Tests/System/UncaughtExceptionTest.php
index 3460125..d882066 100644
--- a/core/modules/system/src/Tests/System/UncaughtExceptionTest.php
+++ b/core/modules/system/src/Tests/System/UncaughtExceptionTest.php
@@ -87,6 +87,7 @@ public function testUncaughtException() {
     $this->assertResponse(500);
     $this->assertText('The website encountered an unexpected error. Please try again later.');
     $this->assertText($this->expectedExceptionMessage);
+    $this->assertErrorLogged($this->expectedExceptionMessage);
   }
 
   /**
@@ -122,6 +123,7 @@ public function testMissingDependency() {
 
     $this->assertRaw('The website encountered an unexpected error.');
     $this->assertRaw($this->expectedExceptionMessage);
+    $this->assertErrorLogged($this->expectedExceptionMessage);
   }
 
   /**
@@ -177,6 +179,7 @@ public function testErrorContainer() {
     $this->assertResponse(500);
 
     $this->assertRaw($this->expectedExceptionMessage);
+    $this->assertErrorLogged($this->expectedExceptionMessage);
   }
 
   /**
@@ -198,6 +201,7 @@ public function testExceptionContainer() {
 
     $this->assertRaw('The website encountered an unexpected error');
     $this->assertRaw($this->expectedExceptionMessage);
+    $this->assertErrorLogged($this->expectedExceptionMessage);
   }
 
   /**
@@ -232,6 +236,7 @@ public function testLostDatabaseConnection() {
     $this->drupalGet('');
     $this->assertResponse(500);
     $this->assertRaw('PDOException');
+    $this->assertErrorLogged($this->expectedExceptionMessage);
   }
 
   /**
