diff --git a/core/core.services.yml b/core/core.services.yml
index 3434104d3e..f92f41ea04 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -445,6 +445,9 @@ services:
   logger.channel.security:
     parent: logger.channel_base
     arguments: ['security']
+  logger.channel.theme:
+    parent: logger.channel_base
+    arguments: ['theme']
   logger.log_message_parser:
     class: Drupal\Core\Logger\LogMessageParser
 
@@ -522,7 +525,7 @@ services:
     class: Drupal\Core\Extension\ModuleInstaller
     tags:
       - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
-    arguments: ['%app.root%', '@module_handler', '@kernel']
+    arguments: ['%app.root%', '@module_handler', '@kernel', '@logger.channel.default']
     lazy: true
   extension.list.module:
     class: Drupal\Core\Extension\ModuleExtensionList
@@ -1490,7 +1493,7 @@ services:
     shared: false
   theme.manager:
     class: Drupal\Core\Theme\ThemeManager
-    arguments: ['%app.root%', '@theme.negotiator', '@theme.initialization', '@module_handler']
+    arguments: ['%app.root%', '@theme.negotiator', '@theme.initialization', '@module_handler', '@logger.channel.theme']
     calls:
       - [setThemeRegistry, ['@theme.registry']]
   theme.initialization:
diff --git a/core/lib/Drupal/Core/Extension/ModuleInstaller.php b/core/lib/Drupal/Core/Extension/ModuleInstaller.php
index bc2f9d0323..cbb54b30ab 100644
--- a/core/lib/Drupal/Core/Extension/ModuleInstaller.php
+++ b/core/lib/Drupal/Core/Extension/ModuleInstaller.php
@@ -9,6 +9,7 @@
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Installer\InstallerKernel;
 use Drupal\Core\Serialization\Yaml;
+use Psr\Log\LoggerInterface;
 
 /**
  * Default implementation of the module installer.
@@ -51,6 +52,13 @@ class ModuleInstaller implements ModuleInstallerInterface {
    */
   protected $uninstallValidators;
 
+  /**
+   * The logger service.
+   *
+   * @var \Psr\Log\LoggerInterface
+   */
+  protected $logger;
+
   /**
    * Constructs a new ModuleInstaller instance.
    *
@@ -60,14 +68,21 @@ class ModuleInstaller implements ModuleInstallerInterface {
    *   The module handler.
    * @param \Drupal\Core\DrupalKernelInterface $kernel
    *   The drupal kernel.
+   * @param \Psr\Log\LoggerInterface|null $logger
+   *   A logger instance.
    *
    * @see \Drupal\Core\DrupalKernel
    * @see \Drupal\Core\CoreServiceProvider
    */
-  public function __construct($root, ModuleHandlerInterface $module_handler, DrupalKernelInterface $kernel) {
+  public function __construct($root, ModuleHandlerInterface $module_handler, DrupalKernelInterface $kernel, LoggerInterface $logger = NULL) {
     $this->root = $root;
     $this->moduleHandler = $module_handler;
     $this->kernel = $kernel;
+    if ($logger === NULL) {
+      @trigger_error('The logger.channel.default service must be passed to ' . __CLASS__ . '::' . __METHOD__ . '(). It was added in drupal:9.1.0 and will be required before drupal:10.0.0. See https://www.drupal.org/node/3160464', E_USER_DEPRECATED);
+      $logger = \Drupal::service('logger.channel.default');
+    }
+    $this->logger = $logger;
   }
 
   /**
@@ -328,7 +343,7 @@ public function install(array $module_list, $enable_dependencies = TRUE) {
         $this->moduleHandler->invoke($module, 'install', [$sync_status]);
 
         // Record the fact that it was installed.
-        \Drupal::logger('system')->info('%module module installed.', ['%module' => $module]);
+        $this->logger->info('%module module installed.', ['%module' => $module]);
       }
     }
 
@@ -504,7 +519,7 @@ public function uninstall(array $module_list, $uninstall_dependents = TRUE) {
       // @see https://www.drupal.org/node/2208429
       \Drupal::service('theme_handler')->refreshInfo();
 
-      \Drupal::logger('system')->info('%module module uninstalled.', ['%module' => $module]);
+      $this->logger->info('%module module uninstalled.', ['%module' => $module]);
 
       $schema_store = \Drupal::keyValue('system.schema');
       $schema_store->delete($module);
diff --git a/core/lib/Drupal/Core/Theme/ThemeManager.php b/core/lib/Drupal/Core/Theme/ThemeManager.php
index c6a0e2287d..53c3ff176d 100644
--- a/core/lib/Drupal/Core/Theme/ThemeManager.php
+++ b/core/lib/Drupal/Core/Theme/ThemeManager.php
@@ -8,6 +8,7 @@
 use Drupal\Core\Routing\StackedRouteMatchInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Template\Attribute;
+use Psr\Log\LoggerInterface;
 
 /**
  * Provides the default implementation of a theme manager.
@@ -56,6 +57,13 @@ class ThemeManager implements ThemeManagerInterface {
    */
   protected $root;
 
+  /**
+   * The logger service.
+   *
+   * @var \Psr\Log\LoggerInterface
+   */
+  protected $logger;
+
   /**
    * Constructs a new ThemeManager object.
    *
@@ -67,12 +75,19 @@ class ThemeManager implements ThemeManagerInterface {
    *   The theme initialization.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
    *   The module handler.
+   * @param \Psr\Log\LoggerInterface|null $logger
+   *   A logger instance.
    */
-  public function __construct($root, ThemeNegotiatorInterface $theme_negotiator, ThemeInitializationInterface $theme_initialization, ModuleHandlerInterface $module_handler) {
+  public function __construct($root, ThemeNegotiatorInterface $theme_negotiator, ThemeInitializationInterface $theme_initialization, ModuleHandlerInterface $module_handler, LoggerInterface $logger = NULL) {
     $this->root = $root;
     $this->themeNegotiator = $theme_negotiator;
     $this->themeInitialization = $theme_initialization;
     $this->moduleHandler = $module_handler;
+    if ($logger === NULL) {
+      @trigger_error('The logger.channel.theme service must be passed to ' . __CLASS__ . '::' . __METHOD__ . '(). It was added in drupal:9.1.0 and will be required before drupal:10.0.0. See https://www.drupal.org/node/3160464', E_USER_DEPRECATED);
+      $logger = \Drupal::service('logger.channel.theme');
+    }
+    $this->logger = $logger;
   }
 
   /**
@@ -171,7 +186,7 @@ public function render($hook, array $variables) {
         // Only log a message when not trying theme suggestions ($hook being an
         // array).
         if (!isset($candidate)) {
-          \Drupal::logger('theme')->warning('Theme hook %hook not found.', ['%hook' => $hook]);
+          $this->logger->warning('Theme hook %hook not found.', ['%hook' => $hook]);
         }
         // There is no theme implementation for the hook passed. Return FALSE so
         // the function calling
