如何以编程方式设置格式化程序?

How to set formatter programmatically?

我正在尝试格式化我的记录器,为此我在设置生活中定义了一个格式化程序。但是我无法弄清楚如何将其设置为记录器处理程序的格式化程序:

def mylogger(name):
    logger = logging.getLogger(name)
    handler = RotatingFileHandler(logger_path, 'w')
    handler.setFormatter(?????)
    logger.addHandler(handler)
    return logger

请注意,我需要以编程方式执行此操作。我无法在设置文件中声明处理程序,因为 RotatingFileHandler 可能需要传递一些额外的参数。

所以问题是:在 handler.setFormatter(?????) 我如何获得我在设置文件中定义的格式化程序(例如,通过名称,如何检索记录器)?

你可以这样做:

handler = RotatingFileHandler(logger_path, 'w')
formatter = logging.Formatter('%(asctime)-12s [%(levelname)s] %(message)s')  
handler.setFormatter(formatter)

可在此处找到文档:formatter, setFormatter