import logging from sys import exc_info class DefaultLogger(object): def __init__(self, is_running_local): self.logger = logging.getLogger("pcluster-manager") if is_running_local: handler = logging.StreamHandler() handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")) self.logger.addHandler(handler) self.logger.setLevel(logging.DEBUG) else: self.logger.setLevel(logging.INFO) def _log_output(self, msg, extra): _extra = {} if extra is None else extra _extra["message"] = msg return _extra def debug(self, msg, extra=None): self.logger.debug(self._log_output(msg, extra)) def info(self, msg, extra=None): self.logger.info(self._log_output(msg, extra)) def warning(self, msg, extra=None): self.logger.warning(self._log_output(msg, extra)) def error(self, msg, extra=None): self.logger.error(self._log_output(msg, extra), exc_info=self.__is_exception_caught()) def __is_exception_caught(self): return exc_info() != (None, None, None) def critical(self, msg, extra=None): self.logger.critical(self._log_output(msg, extra), exc_info=True)