|
@@ -14,24 +14,40 @@ except ImportError:
|
|
|
|
|
|
from carrot.utils import rpartition
|
|
|
|
|
|
-from celery.log import (setup_logger, emergency_error,
|
|
|
+from celery.log import (setup_logger, setup_task_logger, emergency_error,
|
|
|
+ get_default_logger, get_task_logger,
|
|
|
redirect_stdouts_to_logger, LoggingProxy)
|
|
|
from celery.tests.utils import override_stdouts, execute_context
|
|
|
+from celery.utils.compat import LoggerAdapter
|
|
|
|
|
|
|
|
|
+def get_handlers(logger):
|
|
|
+ if isinstance(logger, LoggerAdapter):
|
|
|
+ return logger.logger.handlers
|
|
|
+ return logger.handlers
|
|
|
+
|
|
|
+def set_handlers(logger, new_handlers):
|
|
|
+ if isinstance(logger, LoggerAdapter):
|
|
|
+ logger.logger.handlers = new_handlers
|
|
|
+ logger.handlers = new_handlers
|
|
|
+
|
|
|
@contextmanager
|
|
|
def wrap_logger(logger, loglevel=logging.ERROR):
|
|
|
- old_handlers = logger.handlers
|
|
|
+ old_handlers = get_handlers(logger)
|
|
|
sio = StringIO()
|
|
|
siohandler = logging.StreamHandler(sio)
|
|
|
- logger.handlers = [siohandler]
|
|
|
+ set_handlers(logger, [siohandler])
|
|
|
|
|
|
yield sio
|
|
|
|
|
|
- logger.handlers = old_handlers
|
|
|
+ set_handlers(logger, old_handlers)
|
|
|
+
|
|
|
|
|
|
+class test_default_logger(unittest.TestCase):
|
|
|
|
|
|
-class TestLog(unittest.TestCase):
|
|
|
+ def setUp(self):
|
|
|
+ self.setup_logger = setup_logger
|
|
|
+ self.get_logger = get_default_logger
|
|
|
|
|
|
def _assertLog(self, logger, logmsg, loglevel=logging.ERROR):
|
|
|
|
|
@@ -51,10 +67,10 @@ class TestLog(unittest.TestCase):
|
|
|
return self.assertFalse(val, reason)
|
|
|
|
|
|
def test_setup_logger(self):
|
|
|
- logger = setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
- logger.handlers = [] # Reset previously set logger.
|
|
|
- logger = setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
- self.assertIs(logger.handlers[0].stream, sys.__stderr__,
|
|
|
+ logger = self.setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
+ set_handlers(logger, [])
|
|
|
+ logger = self.setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
+ self.assertIs(get_handlers(logger)[0].stream, sys.__stderr__,
|
|
|
"setup_logger logs to stderr without logfile argument.")
|
|
|
self.assertDidLogFalse(logger, "Logging something",
|
|
|
"Logger doesn't info when loglevel is ERROR",
|
|
@@ -67,13 +83,12 @@ class TestLog(unittest.TestCase):
|
|
|
"Testing emergency error facility")
|
|
|
|
|
|
def test_setup_logger_no_handlers_stream(self):
|
|
|
- from multiprocessing import get_logger
|
|
|
- l = get_logger()
|
|
|
- l.handlers = []
|
|
|
+ l = self.get_logger()
|
|
|
+ set_handlers(l, [])
|
|
|
|
|
|
def with_override_stdouts(outs):
|
|
|
stdout, stderr = outs
|
|
|
- l = setup_logger(logfile=stderr, loglevel=logging.INFO)
|
|
|
+ l = self.setup_logger(logfile=stderr, loglevel=logging.INFO)
|
|
|
l.info("The quick brown fox...")
|
|
|
self.assertIn("The quick brown fox...", stderr.getvalue())
|
|
|
|
|
@@ -81,12 +96,12 @@ class TestLog(unittest.TestCase):
|
|
|
execute_context(context, with_override_stdouts)
|
|
|
|
|
|
def test_setup_logger_no_handlers_file(self):
|
|
|
- from multiprocessing import get_logger
|
|
|
- l = get_logger()
|
|
|
- l.handlers = []
|
|
|
+ l = self.get_logger()
|
|
|
+ set_handlers(l, [])
|
|
|
tempfile = mktemp(suffix="unittest", prefix="celery")
|
|
|
- l = setup_logger(logfile=tempfile, loglevel=0)
|
|
|
- self.assertIsInstance(l.handlers[0], logging.FileHandler)
|
|
|
+ l = self.setup_logger(logfile=tempfile, loglevel=0)
|
|
|
+ print(get_handlers(l)[0].stream)
|
|
|
+ self.assertIsInstance(get_handlers(l)[0], logging.FileHandler)
|
|
|
|
|
|
def test_emergency_error_stderr(self):
|
|
|
def with_override_stdouts(outs):
|
|
@@ -109,7 +124,7 @@ class TestLog(unittest.TestCase):
|
|
|
os.unlink(tempfile)
|
|
|
|
|
|
def test_redirect_stdouts(self):
|
|
|
- logger = setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
+ logger = self.setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
try:
|
|
|
def with_wrap_logger(sio):
|
|
|
redirect_stdouts_to_logger(logger, loglevel=logging.ERROR)
|
|
@@ -122,7 +137,7 @@ class TestLog(unittest.TestCase):
|
|
|
sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
|
|
|
|
|
|
def test_logging_proxy(self):
|
|
|
- logger = setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
+ logger = self.setup_logger(loglevel=logging.ERROR, logfile=None)
|
|
|
|
|
|
def with_wrap_logger(sio):
|
|
|
p = LoggingProxy(logger)
|
|
@@ -143,3 +158,10 @@ class TestLog(unittest.TestCase):
|
|
|
|
|
|
context = wrap_logger(logger)
|
|
|
execute_context(context, with_wrap_logger)
|
|
|
+
|
|
|
+
|
|
|
+class test_task_logger(test_default_logger):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ self.setup_logger = setup_task_logger
|
|
|
+ self.get_logger = get_task_logger
|