log.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: jürgen.pannosch, tanja.zolotareva
  4. """
  5. import sys
  6. import os
  7. import logging
  8. class Log:
  9. def __init__(self, name: str = None,
  10. log_file: str = None,
  11. log_level: str = "INFO",
  12. print_to_stdout: bool = True):
  13. """Sets the log level and the path where the log file is stored
  14. :param log_file: Path to the log file.
  15. :param log_level: Log level."""
  16. if name is None:
  17. name = ''
  18. self._logger = logging.getLogger(name)
  19. if (self._logger.hasHandlers()):
  20. self._logger.handlers.clear()
  21. if log_file is None:
  22. log_file = os.path.join(".", "all.log")
  23. assert(isinstance(log_file, str)),\
  24. "Parameter 'log_path' must be of string type"
  25. formatter = logging.Formatter(
  26. '\n %(name)s %(asctime)s %(levelname)s %(message)s')
  27. os.makedirs(os.path.dirname(log_file), exist_ok=True)
  28. file_handler = logging.FileHandler(log_file)
  29. file_handler.setFormatter(formatter)
  30. self._logger.addHandler(file_handler)
  31. if print_to_stdout:
  32. stream_handler = logging.StreamHandler(sys.stdout)
  33. stream_handler.setFormatter(formatter)
  34. self._logger.addHandler(stream_handler)
  35. self._logger.setLevel(log_level)
  36. def info(self, message: str):
  37. self._logger.info(message)
  38. def warning(self, message: str):
  39. self._logger.warning(message)
  40. def error(self, message: str):
  41. self._logger.error(message)