|
import logging |
|
import sys |
|
from tqdm import tqdm |
|
|
|
def get_tqdm_handler(): |
|
""" |
|
Creates a special handler for tqdm that doesn't interfere with other logs. |
|
""" |
|
class TqdmLoggingHandler(logging.Handler): |
|
def emit(self, record): |
|
try: |
|
msg = self.format(record) |
|
tqdm.write(msg) |
|
self.flush() |
|
except Exception: |
|
self.handleError(record) |
|
|
|
return TqdmLoggingHandler() |
|
|
|
def setup_service_logger(service_name: str) -> logging.Logger: |
|
""" |
|
Configure a specific logger for a given service. |
|
""" |
|
logger = logging.getLogger(f"app.services.{service_name}") |
|
|
|
|
|
if logger.handlers: |
|
return logger |
|
|
|
|
|
tqdm_handler = get_tqdm_handler() |
|
tqdm_handler.setFormatter(logging.Formatter('%(name)s - %(levelname)s - %(message)s')) |
|
logger.addHandler(tqdm_handler) |
|
|
|
|
|
logger.propagate = False |
|
|
|
return logger |