import sys from loguru import logger from app.shared.task_messaging import get_celery celery = get_celery("worker") def setup_celery_logger(c): # Remove Celery's default handlers to prevent duplicate logs celery_logger = c.log.get_default_logger() for handler in celery_logger.handlers[:]: celery_logger.removeHandler(handler) # Set up Loguru logging logger.add("logs/celery_logs.log", retention="30 days", level="DEBUG") logger.add("logs/celery_error_logs.log", retention="30 days", level="ERROR") # Redirect Celery logs to Loguru class InterceptHandler: @staticmethod def write(message): if message.strip(): logger.info(message.strip()) # Required to prevent issues with buffered output @staticmethod def flush(): pass @staticmethod def isatty(): return False sys.stdout = InterceptHandler() sys.stderr = InterceptHandler()