3131 from litestar import status_codes
3232 from litestar .config .app import AppConfig
3333 from litestar .config .cors import CORSConfig
34+ from litestar .logging .config import LoggingConfig as LitestarStandardLoggingConfig
3435 from litestar .logging .config import StructLoggingConfig
3536 from litestar .middleware .logging import LoggingMiddlewareConfig
3637 from litestar .openapi import OpenAPIConfig
@@ -187,6 +188,16 @@ def _build_logging_middleware_config(self) -> "LoggingMiddlewareConfig":
187188 exclude = excluded_paths or None ,
188189 )
189190
191+ def _build_standard_lib_logging_config (self ) -> "LitestarStandardLoggingConfig" :
192+ """Leave stdlib output to lite-bootstrap: Litestar's default config replaces the root handler."""
193+ return LitestarStandardLoggingConfig (
194+ configure_root_logger = False ,
195+ handlers = {"console" : {"class" : "logging.NullHandler" }, "queue_listener" : {"class" : "logging.NullHandler" }},
196+ loggers = {
197+ "litestar" : {"level" : self .bootstrap_config .logging_log_level , "handlers" : [], "propagate" : False }
198+ },
199+ )
200+
190201 def _configure_structlog_loggers (self ) -> None :
191202 """Register Litestar's StructlogPlugin instead of calling ``structlog.configure`` directly."""
192203 self .bootstrap_config .application_config .plugins .append (
@@ -198,7 +209,7 @@ def _configure_structlog_loggers(self) -> None:
198209 wrapper_class = structlog .stdlib .BoundLogger ,
199210 cache_logger_on_first_use = True ,
200211 pretty_print_tty = False ,
201- standard_lib_logging_config = None ,
212+ standard_lib_logging_config = self . _build_standard_lib_logging_config () ,
202213 ),
203214 # Litestar defaults this to True, which logs full request/response bodies.
204215 enable_middleware_logging = self .bootstrap_config .litestar_logging_middleware_enabled ,
0 commit comments