55import logging
66import logging .handlers
77from abc import abstractmethod
8- from collections .abc import Callable
8+ from collections .abc import Callable , Sequence
99from typing import Any , Generic , Optional , TypeVar , Union , cast
1010
1111from sqlalchemy import create_engine
@@ -42,6 +42,7 @@ def __init__(
4242 key_aliases : Optional [dict [str , list [str ]]] = None ,
4343 search_paths : Optional [dict [str , list [str ]]] = None ,
4444 key_handlers : Optional [dict [str , Callable [[Any , logging .LogRecord ], Any ]]] = None ,
45+ available_loggers : Optional [Sequence [str ]] = None ,
4546 ) -> None :
4647 super ().__init__ (level )
4748 self .model = model
@@ -52,6 +53,7 @@ def __init__(
5253 self .key_aliases = key_aliases or {}
5354 self .search_paths = search_paths or {}
5455 self .key_handlers = key_handlers or {}
56+ self .available_loggers = set (available_loggers ) if available_loggers else set ()
5557
5658 @property
5759 def loop (self ) -> asyncio .AbstractEventLoop :
@@ -74,6 +76,9 @@ def construct_message(self, record: logging.LogRecord) -> T_:
7476
7577 def emit (self , record : logging .LogRecord ) -> None :
7678 """Save the message in the database."""
79+ if self .available_loggers and record .name not in self .available_loggers :
80+ return
81+
7782 message = self .construct_message (record )
7883 if self .db_url .drivername == 'postgresql+asyncpg' :
7984 self .loop .run_until_complete (self ._async_emit (message ))
0 commit comments