summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/litestar/plugins/structlog.py
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.11/site-packages/litestar/plugins/structlog.py')
-rw-r--r--venv/lib/python3.11/site-packages/litestar/plugins/structlog.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/litestar/plugins/structlog.py b/venv/lib/python3.11/site-packages/litestar/plugins/structlog.py
new file mode 100644
index 0000000..fafa3dd
--- /dev/null
+++ b/venv/lib/python3.11/site-packages/litestar/plugins/structlog.py
@@ -0,0 +1,56 @@
+from __future__ import annotations
+
+from dataclasses import dataclass, field
+from typing import TYPE_CHECKING
+
+from litestar.cli._utils import console
+from litestar.logging.config import StructLoggingConfig
+from litestar.middleware.logging import LoggingMiddlewareConfig
+from litestar.plugins import InitPluginProtocol
+
+if TYPE_CHECKING:
+ from litestar.config.app import AppConfig
+
+
+@dataclass
+class StructlogConfig:
+ structlog_logging_config: StructLoggingConfig = field(default_factory=StructLoggingConfig)
+ """Structlog Logging configuration for Litestar. See ``litestar.logging.config.StructLoggingConfig``` for details."""
+ middleware_logging_config: LoggingMiddlewareConfig = field(default_factory=LoggingMiddlewareConfig)
+ """Middleware logging config."""
+ enable_middleware_logging: bool = True
+ """Enable request logging."""
+
+
+class StructlogPlugin(InitPluginProtocol):
+ """Structlog Plugin."""
+
+ __slots__ = ("_config",)
+
+ def __init__(self, config: StructlogConfig | None = None) -> None:
+ if config is None:
+ config = StructlogConfig()
+ self._config = config
+ super().__init__()
+
+ def on_app_init(self, app_config: AppConfig) -> AppConfig:
+ """Structlog Plugin
+
+ Args:
+ app_config: The :class:`AppConfig <litestar.config.app.AppConfig>` instance.
+
+ Returns:
+ The app config object.
+ """
+ if app_config.logging_config is not None and isinstance(app_config.logging_config, StructLoggingConfig):
+ console.print(
+ "[red dim]* Found pre-configured `StructLoggingConfig` on the `app` instance. Skipping configuration.[/]",
+ )
+ else:
+ app_config.logging_config = self._config.structlog_logging_config
+ app_config.logging_config.configure()
+ if self._config.structlog_logging_config.standard_lib_logging_config is not None: # pragma: no cover
+ self._config.structlog_logging_config.standard_lib_logging_config.configure() # pragma: no cover
+ if self._config.enable_middleware_logging:
+ app_config.middleware.append(self._config.middleware_logging_config.middleware)
+ return app_config # pragma: no cover