mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-11 13:08:34 +03:00
adds celery logging rotation
This commit is contained in:
29
app/worker/worker_log.py
Normal file
29
app/worker/worker_log.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from loguru import logger
|
||||
from celery import Celery
|
||||
import sys
|
||||
|
||||
from app.shared.task_messaging import get_celery
|
||||
|
||||
celery = get_celery("worker")
|
||||
|
||||
def setup_celery_logger(celery):
|
||||
# Remove Celery's default handlers to prevent duplicate logs
|
||||
celery_logger = celery.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:
|
||||
def write(self, message):
|
||||
if message.strip():
|
||||
logger.info(message.strip())
|
||||
# Required to prevent issues with buffered output
|
||||
def flush(self): pass
|
||||
def isatty(self): return False
|
||||
|
||||
sys.stdout = InterceptHandler()
|
||||
sys.stderr = InterceptHandler()
|
||||
Reference in New Issue
Block a user