This is an automated email from the ASF dual-hosted git repository.

Miretpl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 8d35eebaca1 Honor verbose logging for Celery workers (#69828)
8d35eebaca1 is described below

commit 8d35eebaca13ebf26f58752021102c91e00d6046
Author: jj.lee <[email protected]>
AuthorDate: Sat Jul 25 01:24:23 2026 +0900

    Honor verbose logging for Celery workers (#69828)
---
 .../airflow/providers/celery/cli/celery_command.py |  3 ++
 .../tests/unit/celery/cli/test_celery_command.py   | 33 ++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git 
a/providers/celery/src/airflow/providers/celery/cli/celery_command.py 
b/providers/celery/src/airflow/providers/celery/cli/celery_command.py
index 987233241e1..3a953f2a26b 100644
--- a/providers/celery/src/airflow/providers/celery/cli/celery_command.py
+++ b/providers/celery/src/airflow/providers/celery/cli/celery_command.py
@@ -310,6 +310,9 @@ def worker(args):
     if not celery_log_level:
         celery_log_level = config.get("logging", "LOGGING_LEVEL")
 
+    if args.verbose:
+        celery_log_level = "DEBUG"
+
     # Setup Celery worker
     options = [
         "worker",
diff --git a/providers/celery/tests/unit/celery/cli/test_celery_command.py 
b/providers/celery/tests/unit/celery/cli/test_celery_command.py
index b189f0f9078..8a91aac7efc 100644
--- a/providers/celery/tests/unit/celery/cli/test_celery_command.py
+++ b/providers/celery/tests/unit/celery/cli/test_celery_command.py
@@ -233,6 +233,39 @@ class TestWorkerStart:
         mock_set_mp.assert_called_once_with("celery")
 
 
[email protected]("conf_stale_bundle_cleanup_disabled")
+class TestWorkerLogLevel:
+    @pytest.fixture(autouse=True)
+    def _disable_cli_action_logging(self):
+        with (
+            patch("airflow.utils.cli.cli_action_loggers.on_pre_execution"),
+            patch("airflow.utils.cli.cli_action_loggers.on_post_execution"),
+        ):
+            yield
+
+    @classmethod
+    def setup_class(cls):
+        with conf_vars({("core", "executor"): "CeleryExecutor"}):
+            importlib.reload(executor_loader)
+            importlib.reload(cli_parser)
+            cls.parser = cli_parser.get_parser()
+
+    @conf_vars({("logging", "celery_logging_level"): "INFO"})
+    @mock.patch("airflow.providers.celery.cli.celery_command.setup_locations")
+    @mock.patch("airflow.providers.celery.cli.celery_command.Process")
+    @mock.patch("airflow.providers.celery.executors.celery_executor.app")
+    def test_worker_verbose_overrides_configured_celery_loglevel(
+        self, mock_celery_app, mock_popen, mock_locations
+    ):
+        mock_locations.return_value = ("pid_file", None, None, None)
+        args = self.parser.parse_args(["celery", "worker", "--verbose", 
"--skip-serve-logs"])
+
+        celery_command.worker(args)
+
+        worker_options = mock_celery_app.worker_main.call_args[0][0]
+        assert worker_options[worker_options.index("--loglevel") + 1] == 
"DEBUG"
+
+
 @pytest.mark.backend("mysql", "postgres")
 @pytest.mark.usefixtures("conf_stale_bundle_cleanup_disabled")
 class TestWorkerMultiTeam:

Reply via email to