Print provider name in logging output (#3113)
authorFabian Munkes <105975993+fmunkes@users.noreply.github.com>
Mon, 9 Feb 2026 07:16:00 +0000 (08:16 +0100)
committerGitHub <noreply@github.com>
Mon, 9 Feb 2026 07:16:00 +0000 (08:16 +0100)
* multi-instance logging name

* use only name

music_assistant/mass.py
music_assistant/models/provider.py

index 6268e661e94a30f4e68add57bdbb41924dc2a60a..e2fdb55068e11c774eb4db5266f43c67afeedea4 100644 (file)
@@ -837,6 +837,9 @@ class MusicAssistant:
         )
         provider.available = True
 
+        # adapt logging name if needed
+        provider._set_log_level_from_config(provider.config)
+
         # execute post load actions
         async def _on_provider_loaded() -> None:
             await provider.loaded_in_mass()
index 4f7f6705a447a88943800795ceb97d9cc5fe5c01..5caa6b2422cd4ef162350b5e72b88f080f5eac30 100644 (file)
@@ -74,7 +74,7 @@ class Provider:
         self.config = config
 
         # update log level if changed
-        if f"values/{CONF_LOG_LEVEL}" in changed_keys:
+        if f"values/{CONF_LOG_LEVEL}" in changed_keys or "name" in changed_keys:
             self._set_log_level_from_config(config)
 
         # reload if any non-log-level value keys changed
@@ -189,7 +189,13 @@ class Provider:
     def _set_log_level_from_config(self, config: ProviderConfig) -> None:
         """Set log level from config."""
         mass_logger = logging.getLogger(MASS_LOGGER_NAME)
-        self.logger = mass_logger.getChild(self.domain)
+        # self.name is only available after async_init. Otherwise we run into a race condition.
+        # see https://github.com/music-assistant/support/issues/4801
+        logging_name = self.domain
+        if getattr(self, "available", False):
+            # async_init completed
+            logging_name = self.name
+        self.logger = mass_logger.getChild(logging_name)
         log_level = str(config.get_value(CONF_LOG_LEVEL))
         if log_level == "GLOBAL":
             self.logger.setLevel(mass_logger.level)