avoid double logging of celery
This commit is contained in:
@@ -73,6 +73,12 @@ class CeleryManager:
|
||||
logger.debug(f"Generated Celery command: {' '.join(command)}")
|
||||
return command
|
||||
|
||||
def _get_worker_env(self):
|
||||
# Inherit current environment, but set NO_CONSOLE_LOG=1 for subprocess
|
||||
env = os.environ.copy()
|
||||
env["NO_CONSOLE_LOG"] = "1"
|
||||
return env
|
||||
|
||||
def _process_output_reader(self, stream, log_prefix, error=False):
|
||||
logger.debug(f"Log reader thread started for {log_prefix}")
|
||||
try:
|
||||
@@ -141,6 +147,7 @@ class CeleryManager:
|
||||
text=True,
|
||||
bufsize=1,
|
||||
universal_newlines=True,
|
||||
env=self._get_worker_env(),
|
||||
)
|
||||
self.download_log_thread_stdout = threading.Thread(
|
||||
target=self._process_output_reader,
|
||||
@@ -177,6 +184,7 @@ class CeleryManager:
|
||||
text=True,
|
||||
bufsize=1,
|
||||
universal_newlines=True,
|
||||
env=self._get_worker_env(),
|
||||
)
|
||||
self.utility_log_thread_stdout = threading.Thread(
|
||||
target=self._process_output_reader,
|
||||
|
||||
@@ -285,9 +285,16 @@ def setup_celery_logging(**kwargs):
|
||||
"""
|
||||
This handler ensures Celery uses our application logging settings
|
||||
instead of its own. Prevents duplicate log configurations.
|
||||
Also disables console logging if NO_CONSOLE_LOG=1 is set in the environment.
|
||||
"""
|
||||
# Using the root logger's handlers and level preserves our config
|
||||
return logging.getLogger()
|
||||
root_logger = logging.getLogger()
|
||||
import os
|
||||
if os.environ.get("NO_CONSOLE_LOG") == "1":
|
||||
# Remove all StreamHandlers (console handlers) from the root logger
|
||||
handlers_to_remove = [h for h in root_logger.handlers if isinstance(h, logging.StreamHandler)]
|
||||
for h in handlers_to_remove:
|
||||
root_logger.removeHandler(h)
|
||||
return root_logger
|
||||
|
||||
|
||||
# The initialization of a worker will log the worker configuration
|
||||
|
||||
Reference in New Issue
Block a user