42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import logging
|
|
from contextlib import contextmanager
|
|
|
|
|
|
class PocketTTSFilter(logging.Filter):
|
|
def filter(self, record):
|
|
return record.name.startswith("pocket_tts")
|
|
|
|
|
|
@contextmanager
|
|
def enable_logging(library_name, level):
|
|
# Get the specific logger and its parent
|
|
logger = logging.getLogger(library_name)
|
|
parent_logger = logging.getLogger("pocket_tts")
|
|
|
|
# Store original configuration
|
|
old_level = logger.level
|
|
old_parent_level = parent_logger.level
|
|
old_handlers = parent_logger.handlers.copy()
|
|
|
|
# Configure logging format for pocket_tts logger
|
|
parent_logger.setLevel(level)
|
|
|
|
# Clear existing handlers and add our custom formatter with filter
|
|
parent_logger.handlers.clear()
|
|
handler = logging.StreamHandler()
|
|
formatter = logging.Formatter("%(levelname)s: %(message)s")
|
|
handler.setFormatter(formatter)
|
|
handler.addFilter(PocketTTSFilter())
|
|
parent_logger.addHandler(handler)
|
|
parent_logger.propagate = False
|
|
|
|
try:
|
|
yield logger
|
|
finally:
|
|
# Restore original configuration
|
|
logger.setLevel(old_level)
|
|
parent_logger.setLevel(old_parent_level)
|
|
parent_logger.handlers.clear()
|
|
for h in old_handlers:
|
|
parent_logger.addHandler(h)
|