一个定期执行的任务正在执行一些可能会发生权限错误/数据库连接错误的操作。
尽管我将调试/信息级别的整个过程记录到控制台中,但我只想仅使用文件处理程序将错误记录到文件中。这可以通过以下记录器设置来实现:
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")
即使没有出现错误,也会为任务的每次执行自动生成。
有没有办法仅在发生错误时生成相应的日志文件,这样我就不必手动删除空的日志文件?