diff --git a/homeassistant/components/logger/helpers.py b/homeassistant/components/logger/helpers.py
index 87ec2cc8cd5256ec1e81122aa297bcbe308f741d..bf37ab3625b669aebe9471c06595c18311ea0e8f 100644
--- a/homeassistant/components/logger/helpers.py
+++ b/homeassistant/components/logger/helpers.py
@@ -6,6 +6,7 @@ from collections.abc import Mapping
 import contextlib
 from dataclasses import asdict, dataclass
 from enum import StrEnum
+from functools import lru_cache
 import logging
 from typing import Any, cast
 
@@ -216,3 +217,11 @@ class LoggerSettings:
                 )
 
         return dict(combined_logs)
+
+
+get_logger = lru_cache(maxsize=256)(logging.getLogger)
+"""Get a logger.
+
+getLogger uses a threading.RLock, so we cache the result to avoid
+locking the threads every time the integrations page is loaded.
+"""
diff --git a/homeassistant/components/logger/websocket_api.py b/homeassistant/components/logger/websocket_api.py
index 89026a07b8a072c46683453a83b3d871b7db8724..240db3144af040129fae42c9a1c249cae3861abd 100644
--- a/homeassistant/components/logger/websocket_api.py
+++ b/homeassistant/components/logger/websocket_api.py
@@ -1,5 +1,4 @@
 """Websocket API handlers for the logger integration."""
-import logging
 from typing import Any
 
 import voluptuous as vol
@@ -16,6 +15,7 @@ from .helpers import (
     LogPersistance,
     LogSettingsType,
     async_get_domain_config,
+    get_logger,
 )
 
 
@@ -38,7 +38,7 @@ def handle_integration_log_info(
         [
             {
                 "domain": integration,
-                "level": logging.getLogger(
+                "level": get_logger(
                     f"homeassistant.components.{integration}"
                 ).getEffectiveLevel(),
             }