# -*- coding: utf-8 -*- """ @author: jürgen.pannosch, tanja.zolotareva """ import sys import os import logging class Log: def __init__(self, name: str = None, log_file: str = None, log_level: str = "INFO", print_to_stdout: bool = True): """Sets the log level and the path where the log file is stored :param log_file: Path to the log file. :param log_level: Log level.""" if name is None: name = '' self._logger = logging.getLogger(name) if (self._logger.hasHandlers()): self._logger.handlers.clear() if log_file is None: log_file = os.path.join(".", "all.log") assert(isinstance(log_file, str)),\ "Parameter 'log_path' must be of string type" formatter = logging.Formatter( '\n %(name)s %(asctime)s %(levelname)s %(message)s') os.makedirs(os.path.dirname(log_file), exist_ok=True) file_handler = logging.FileHandler(log_file) file_handler.setFormatter(formatter) self._logger.addHandler(file_handler) if print_to_stdout: stream_handler = logging.StreamHandler(sys.stdout) stream_handler.setFormatter(formatter) self._logger.addHandler(stream_handler) self._logger.setLevel(log_level) def info(self, message: str): self._logger.info(message) def warning(self, message: str): self._logger.warning(message) def error(self, message: str): self._logger.error(message)