log.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import multiprocessing
  2. import os
  3. import time
  4. import logging
  5. from celery.conf import LOG_FORMAT, DAEMON_LOG_LEVEL
  6. __all__ = ["setup_logger", "emergency_error"]
  7. def setup_logger(loglevel=DAEMON_LOG_LEVEL, logfile=None, format=LOG_FORMAT,
  8. **kwargs):
  9. """Setup the ``multiprocessing`` logger. If ``logfile`` is not specified,
  10. ``stderr`` is used.
  11. Returns logger object.
  12. """
  13. logger = multiprocessing.get_logger()
  14. if logfile:
  15. log_file_handler = logging.FileHandler(logfile)
  16. formatter = logging.Formatter(format)
  17. log_file_handler.setFormatter(formatter)
  18. logger.addHandler(log_file_handler)
  19. else:
  20. multiprocessing.log_to_stderr()
  21. logger.setLevel(loglevel)
  22. return logger
  23. def emergency_error(logfile, message):
  24. logfh = open(logfile, "a")
  25. logfh.write("[%(asctime)s: FATAL/%(pid)d]: %(message)s\n" % {
  26. "asctime": time.asctime(),
  27. "pid": os.getpid(),
  28. "message": message})
  29. logfh.close()