Создавать файлы журналов только в случае возникновения ошибок - PullRequest
0 голосов
/ 27 мая 2020

Периодически выполняемая задача выполняет некоторые действия, при которых могут возникнуть ошибки прав доступа / ошибки подключения к базе данных.

Хотя я регистрирую весь процесс на уровне отладки / информации в своей консоли, я хотел бы только регистрировать ошибки, используя обработчик файлов, в файл. Это достигается с помощью следующей настройки регистратора:

import os
import logging
from datetime import datetime


def configure_logging(name, level):
    """ Configures the logging object to print messages to the console window
    and save them into a log file.
    """
    current_time = datetime.now().strftime('%Y_%m_%d_%H_%M_%S')

    logger = logging.getLogger(name)
    logger.setLevel(getattr(logging, level))
    # set the format of messages
    formatter = logging.Formatter("%(name)s: %(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%H:%M:%S")
    # configure the log file handler
    file_handler = logging.FileHandler(os.path.join(os.getcwd(),
                                                    "automation",
                                                    "logs",
                                                    f"{current_time}_{name}.log"),
                                        mode='w', encoding='utf8')
    file_handler.setLevel(logging.ERROR)
    file_handler.setFormatter(formatter)

    # configure the console handler
    console_handler = logging.StreamHandler()
    console_handler.setLevel(getattr(logging, level))
    console_handler.setFormatter(formatter)
    # add handlers to logger object
    logger.addHandler(file_handler)
    logger.addHandler(console_handler)

    return logger

Ошибки правильно записываются в указанный файл c. Однако соответствующий файл

os.path.join(os.getcwd(), "automation", "logs", f"{current_time}_{name}.log")

создается автоматически для каждого выполнения задачи, даже если ошибки не появляются.

Есть ли способ генерировать соответствующий файл журнала только при ошибках возникают такие, что мне не нужно вручную удалять пустые файлы журнала?

...