mirror of
https://github.com/bellingcat/auto-archiver-api.git
synced 2026-06-12 05:28:34 +03:00
adds celery logging rotation
This commit is contained in:
@@ -14,6 +14,7 @@ from app.shared.settings import get_settings
|
|||||||
from app.shared.log import log_error
|
from app.shared.log import log_error
|
||||||
from app.shared.aa_utils import get_all_urls
|
from app.shared.aa_utils import get_all_urls
|
||||||
from app.shared.db import worker_crud
|
from app.shared.db import worker_crud
|
||||||
|
from app.worker.worker_log import setup_celery_logger
|
||||||
|
|
||||||
settings = get_settings()
|
settings = get_settings()
|
||||||
|
|
||||||
@@ -22,6 +23,8 @@ Redis = get_redis()
|
|||||||
|
|
||||||
USER_GROUPS_FILENAME = settings.USER_GROUPS_FILENAME
|
USER_GROUPS_FILENAME = settings.USER_GROUPS_FILENAME
|
||||||
|
|
||||||
|
setup_celery_logger(celery)
|
||||||
|
|
||||||
# TODO: these are temporary PATCHES for new aa's functionality
|
# TODO: these are temporary PATCHES for new aa's functionality
|
||||||
# logger.add("app/worker/worker_log.log", level="DEBUG")
|
# logger.add("app/worker/worker_log.log", level="DEBUG")
|
||||||
logger.remove = lambda x: print(f"logger.remove({x})")
|
logger.remove = lambda x: print(f"logger.remove({x})")
|
||||||
|
|||||||
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()
|
||||||
@@ -15,8 +15,8 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
# command: watchmedo auto-restart --patterns="*.py" --recursive --ignore-directories -- celery -- --app=app.worker.main.celery worker --loglevel=debug --logfile=/aa-api/logs/celery.log -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
# command: watchmedo auto-restart --patterns="*.py" --recursive --ignore-directories -- celery -- --app=app.worker.main.celery worker -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
||||||
command: celery --app=app.worker.main.celery worker --loglevel=debug --logfile=/aa-api/logs/celery.log -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
command: celery --app=app.worker.main.celery worker -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
||||||
restart: "no"
|
restart: "no"
|
||||||
env_file: .env.dev
|
env_file: .env.dev
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ services:
|
|||||||
dockerfile: worker.Dockerfile
|
dockerfile: worker.Dockerfile
|
||||||
restart: always
|
restart: always
|
||||||
env_file: .env.prod
|
env_file: .env.prod
|
||||||
command: celery --app=app.worker.main.celery worker --loglevel=warning --logfile=/aa-api/logs/celery.log -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
command: celery --app=app.worker.main.celery worker -Q high_priority,low_priority --concurrency=${CONCURRENCY}
|
||||||
volumes:
|
volumes:
|
||||||
- ./logs:/aa-api/logs
|
- ./logs:/aa-api/logs
|
||||||
- ./database:/aa-api/database
|
- ./database:/aa-api/database
|
||||||
|
|||||||
Reference in New Issue
Block a user