仅在发生错误的情况下生成日志文件

时间:2020-05-27 14:01:46

标签: python logging

一个定期执行的任务正在执行一些可能会发生权限错误/数据库连接错误的操作。

尽管我将调试/信息级别的整个过程记录到控制台中,但我只想仅使用文件处理程序将错误记录到文件中。这可以通过以下记录器设置来实现:

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

错误已正确记录到特定文件中。但是,相应的文件

os.path.join(os.getcwd(), "automation", "logs", f"{current_time}_{name}.log")
即使没有出现错误,也会为任务的每次执行自动生成

有没有办法仅在发生错误时生成相应的日志文件,这样我就不必手动删除空的日志文件?

0 个答案:

没有答案
相关问题