logger.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import os
  2. import logging
  3. import tempfile
  4. from . import constants
  5. LOG_FILE = None
  6. LOGGER = None
  7. LEVELS = {
  8. constants.DEBUG: logging.DEBUG,
  9. constants.INFO: logging.INFO,
  10. constants.WARNING: logging.WARNING,
  11. constants.ERROR: logging.ERROR,
  12. constants.CRITICAL: logging.CRITICAL
  13. }
  14. def init(filename, level=constants.DEBUG):
  15. """Initialize the logger.
  16. :param filename: base name of the log file
  17. :param level: logging level (Default value = DEBUG)
  18. """
  19. global LOG_FILE
  20. LOG_FILE = os.path.join(tempfile.gettempdir(), filename)
  21. with open(LOG_FILE, 'w'):
  22. pass
  23. global LOGGER
  24. LOGGER = logging.getLogger('Three.Export')
  25. LOGGER.setLevel(LEVELS[level])
  26. if not LOGGER.handlers:
  27. stream = logging.StreamHandler()
  28. stream.setLevel(LEVELS[level])
  29. format_ = '%(asctime)s - %(name)s - %(levelname)s: %(message)s'
  30. formatter = logging.Formatter(format_)
  31. stream.setFormatter(formatter)
  32. file_handler = logging.FileHandler(LOG_FILE)
  33. file_handler.setLevel(LEVELS[level])
  34. file_handler.setFormatter(formatter)
  35. LOGGER.addHandler(stream)
  36. LOGGER.addHandler(file_handler)
  37. def info(*args):
  38. LOGGER.info(*args)
  39. def debug(*args):
  40. LOGGER.debug(*args)
  41. def warning(*args):
  42. LOGGER.warning(*args)
  43. def error(*args):
  44. LOGGER.error(*args)
  45. def critical(*args):
  46. LOGGER.critical(*args)