Browse Source

Raise if get_task_logger used with celery/celery.task names. Closes #3475

Ask Solem 8 years ago
parent
commit
319aedb0df
2 changed files with 12 additions and 0 deletions
  1. 4 0
      celery/utils/log.py
  2. 8 0
      t/unit/app/test_log.py

+ 4 - 0
celery/utils/log.py

@@ -31,6 +31,8 @@ PY3 = sys.version_info[0] == 3
 
 MP_LOG = os.environ.get('MP_LOG', False)
 
+RESERVED_LOGGER_NAMES = {'celery', 'celery.task'}
+
 # Sets up our logging hierarchy.
 #
 # Every logger in the celery package inherits from the "celery"
@@ -100,6 +102,8 @@ worker_logger = get_logger('celery.worker')
 
 
 def get_task_logger(name):
+    if name in RESERVED_LOGGER_NAMES:
+        raise RuntimeError('Logger name {0!r} is reserved!'.format(name))
     logger = get_logger(name)
     if not logger_isa(logger, task_logger):
         logger.parent = task_logger

+ 8 - 0
t/unit/app/test_log.py

@@ -343,6 +343,14 @@ class test_task_logger(test_default_logger):
     def get_logger(self, *args, **kwargs):
         return get_task_logger('test_task_logger')
 
+    def test_renaming_base_logger(self):
+        with pytest.raises(RuntimeError):
+            get_task_logger('celery')
+
+    def test_renaming_task_logger(self):
+        with pytest.raises(RuntimeError):
+            get_task_logger('celery.task')
+
 
 class MockLogger(logging.Logger):
     _records = None