示例#1
0
    def email_handler_level(self, level=logging.WARNING):
        """Setter: Logging level for email notifications."""

        # find all email handlers (there should be only one)
        eh = [
            x for x in root_logger.handlers if type(x) == logging.handlers.SMTPHandler
        ]

        if len(eh) == 0:
            logger.warning("No email handler could be found.")
        else:
            eh[0].setLevel(level)
        # update conf file
        CONF.set("CustomXepr", "email_handler_level", level)
示例#2
0
    def notify_address(self, email_list):
        """Setter: Address list for email notifications."""

        # find all email handlers (there should be only one)
        eh = [
            x for x in root_logger.handlers if type(x) == logging.handlers.SMTPHandler
        ]

        if len(eh) == 0:
            logging.warning("No email handler could be found.")
        elif len(eh) > 0:
            for handler in eh:
                handler.toaddrs = email_list

        email_list_str = ", ".join(email_list)
        logger.info("Email notifications will be sent to " + email_list_str + ".")

        # update conf file
        CONF.set("CustomXepr", "notify_address", email_list)
示例#3
0
    def _setup_root_logger():

        root_logger.setLevel(logging.DEBUG)
        root_logger.handlers.clear()

        # define standard format of logging messages
        f = logging.Formatter(
            fmt="%(asctime)s %(name)s %(levelname)s: " + "%(message)s", datefmt="%H:%M"
        )

        # create and add email handler
        email_handler = logging.handlers.SMTPHandler(
            mailhost=(CONF.get("SMTP", "mailhost"), CONF.get("SMTP", "port")),
            fromaddr=CONF.get("SMTP", "fromaddr"),
            toaddrs=CONF.get("CustomXepr", "notify_address"),
            subject="CustomXepr logger",
            credentials=CONF.get("SMTP", "credentials"),
            secure=CONF.get("SMTP", "secure"),
        )
        email_handler.setFormatter(f)
        email_handler.setLevel(CONF.get("CustomXepr", "email_handler_level"))

        root_logger.addHandler(email_handler)

        # add file handler
        home_path = os.path.expanduser("~")
        logging_path = os.path.join(home_path, ".CustomXepr", "LOG_FILES")

        if not os.path.exists(logging_path):
            os.makedirs(logging_path)

        log_file = os.path.join(
            logging_path,
            "root_logger " + time.strftime("%Y-%m-%d_%H-%M-%S") + ".txt",
        )
        file_handler = logging.FileHandler(log_file)
        file_handler.setFormatter(f)
        file_handler.setLevel(logging.INFO)
        root_logger.addHandler(file_handler)

        # delete old log files
        now = time.time()
        days_to_keep = 365

        for f in os.listdir(logging_path):
            f = os.path.join(logging_path, f)
            if os.stat(f).st_mtime < now - days_to_keep * 24 * 60 * 60:
                if os.path.isfile(f):
                    os.remove(f)
示例#4
0
    def _setup_root_logger():

        # Set up new STATUS level
        root_logger = logging.getLogger()

        logging.STATUS = 15
        logging.addLevelName(logging.STATUS, "STATUS")
        for l in [logger, root_logger]:
            l.setLevel(logging.STATUS)
            setattr(
                l,
                "status",
                lambda message, *args: logger._log(logging.STATUS, message,
                                                   args),
            )

        # find all email handlers
        eh = [
            x for x in root_logger.handlers
            if type(x) == logging.handlers.SMTPHandler
        ]
        # find all file handlers
        fh = [
            x for x in root_logger.handlers if type(x) == logging.FileHandler
        ]
        # find all stream handlers
        sh = [
            x for x in root_logger.handlers if type(x) == logging.StreamHandler
        ]

        # define standard format of logging messages
        f = logging.Formatter(fmt="%(asctime)s %(name)s %(levelname)s: " +
                              "%(message)s",
                              datefmt="%H:%M")

        # remove stream handlers
        for handler in sh:
            root_logger.handlers.remove(handler)

        # add email handler if not present
        if len(eh) == 0:
            # create and add email handler
            email_handler = logging.handlers.SMTPHandler(
                mailhost=(CONF.get("SMTP",
                                   "mailhost"), CONF.get("SMTP", "port")),
                fromaddr=CONF.get("SMTP", "fromaddr"),
                toaddrs=CONF.get("CustomXepr", "notify_address"),
                subject="CustomXepr logger",
                credentials=CONF.get("SMTP", "credentials"),
                secure=CONF.get("SMTP", "secure"),
            )
            email_handler.setFormatter(f)
            email_handler.setLevel(
                CONF.get("CustomXepr", "email_handler_level"))

            root_logger.addHandler(email_handler)

        # add file handler if not present
        home_path = os.path.expanduser("~")
        logging_path = os.path.join(home_path, ".CustomXepr", "LOG_FILES")

        if len(fh) == 0:
            if not os.path.exists(logging_path):
                os.makedirs(logging_path)

            log_file = os.path.join(
                logging_path,
                "root_logger " + time.strftime("%Y-%m-%d_%H-%M-%S") + ".txt",
            )
            file_handler = logging.FileHandler(log_file)
            file_handler.setFormatter(f)
            file_handler.setLevel(logging.INFO)
            root_logger.addHandler(file_handler)

        # delete old log files
        now = time.time()
        days_to_keep = 365

        for f in os.listdir(logging_path):
            f = os.path.join(logging_path, f)
            if os.stat(f).st_mtime < now - days_to_keep * 24 * 60 * 60:
                if os.path.isfile(f):
                    os.remove(f)
示例#5
0
 def notify_address(self):
     """ List of addresses for email notifications."""
     return CONF.get("CustomXepr", "notify_address")