Python将stderr从第三方库添加到多处理记录器

问题描述

出于调试目的,我试图将所有stderr重定向到我的log_file。有一种方法可以将所有错误(也就是第三方库中引发的错误重定向到我的文件

这是我定义记录器的方式,但是如果另一个库(例如os“ FileNotFoundError”)引发了意外异常,则该记录确实会打印到控制台,但不会写入日志文件

    PARENT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    #create logger
    multiprocessing.log_to_stderr()
    logger = multiprocessing.get_logger()
    logger.setLevel(logging.WARNING)
    
    #create console handler
    console_handler = logging.StreamHandler(sys.stderr)
    console_handler.setLevel(logging.WARNING)

    #create file handler rotation
    log_path = os.path.join(PARENT_DIR,'logs')
    log_file = os.path.join(log_path,'my_logs.log')
    file_handler = logging.handlers.RotatingFileHandler(log_file,maxBytes=10)
    file_handler.setLevel(logging.WARNING)

    #create formatter and add it to the handler
    formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(message)s-%(funcName)s-%(threadName)s-%(processName)s') 
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)

    #add handlers to the logger
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)