# # Aura Engine API (https://gitlab.servus.at/aura/engine-api) # # Copyright (C) 2020 - The Aura Engine Team. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. import logging from .config import AuraConfig class AuraLogger(): """ AuraLogger Class Logger for all Aura Engine components. The default logger is `AuraEngine`. Other loggers are defined by passing a custom name on instantiation. The logger respects the log-level as defined in the engine's configuration file. """ config = None logger = None def __init__(self, config, name="AuraEngine"): """ Constructor to create a new logger defined by the passed name. Args: name (String): The name of the logger """ self.config = config self.__create_logger(name) def __create_logger(self, name): """ Creates the logger instance for the given name. Args: name (String): The name of the logger """ lvl = self.config.get("loglevel") # create logger self.logger = logging.getLogger(name) self.logger.setLevel(lvl) if not self.logger.hasHandlers(): # create file handler for logger file_handler = logging.FileHandler(self.config.get("logdir") + "/"+name+".log") file_handler.setLevel(lvl) # create stream handler for logger stream_handler = logging.StreamHandler() stream_handler.setLevel(lvl) # set format of log datepart = "%(asctime)s:%(name)s:%(levelname)s" message = " - %(message)s - " filepart = "[%(filename)s:%(lineno)s-%(funcName)s()]" formatter = logging.Formatter(datepart + message + filepart) # set log of handlers file_handler.setFormatter(formatter) stream_handler.setFormatter(formatter) # add handlers to the logger self.logger.addHandler(file_handler) self.logger.addHandler(stream_handler) self.logger.debug("Added handlers to logger") else: self.logger.debug("Reused logger")