source file: /opt/devel/celery/celery/log.py
file stats: 33 lines, 31 executed: 93.9% covered
1. import multiprocessing 2. import os 3. import time 4. import logging 5. from celery.conf import LOG_FORMAT, DAEMON_LOG_LEVEL 6. 7. 8. def setup_logger(loglevel=DAEMON_LOG_LEVEL, logfile=None, format=LOG_FORMAT, 9. **kwargs): 10. """Setup the ``multiprocessing`` logger. If ``logfile`` is not specified, 11. ``stderr`` is used. 12. 13. Returns logger object. 14. """ 15. logger = multiprocessing.get_logger() 16. if logfile: 17. if hasattr(logfile, "write"): 18. log_file_handler = logging.StreamHandler(logfile) 19. else: 20. log_file_handler = logging.FileHandler(logfile) 21. formatter = logging.Formatter(format) 22. log_file_handler.setFormatter(formatter) 23. logger.addHandler(log_file_handler) 24. else: 25. multiprocessing.log_to_stderr() 26. logger.setLevel(loglevel) 27. return logger 28. 29. 30. def emergency_error(logfile, message): 31. """Emergency error logging, for when there's no standard file 32. descriptors open because the process has been daemonized or for 33. some other reason.""" 34. logfh_needs_to_close = False 35. if hasattr(logfile, "write"): 36. logfh = logfile 37. else: 38. logfh = open(logfile, "a") 39. logfh_needs_to_close = True 40. logfh.write("[%(asctime)s: FATAL/%(pid)d]: %(message)s\n" % { 41. "asctime": time.asctime(), 42. "pid": os.getpid(), 43. "message": message}) 44. if logfh_needs_to_close: 45. logfh.close()