根据输出级别将输出流式传输到不同的记录器

问题描述

我正在尝试将 Python 中的系统输出发送到两个不同的日志。 但是,尽管我已经指定了两个具有自己的日志记录级别的不同文件,但这两个输出会转到同一个文件。 但是,如果我只调用其中之一,日志错误会正确重定向输出

class StreamToLogger(object):
    def __init__(self,logger,log_level=logging.INFO):
        self.logger = logger
        self.log_level = log_level
        self.linebuf = ''
    def write(self,buf):
        for line in buf.rstrip().splitlines():
            self.logger.log(self.log_level,line.rstrip())
    def flush(self):
        pass


def launch_logger(filename,level):
    if level == 'INFO':
        logging.basicConfig(level=logging.INFO,format='%(asctime)s:%(levelname)s:%(name)s:%(message)s',filename=filename,filemode='a')
        global stdout_logger
        stdout_logger = logging.getLogger('STDOUT')
        sys.stdout = StreamToLogger(stdout_logger,logging.INFO)
    else:
        logging.basicConfig(level=logging.ERROR,filemode='a')
        global stderr_logger
        stderr_logger = logging.getLogger('STDERR')
        sys.stderr = StreamToLogger(stderr_logger,logging.ERROR)

launch_logger('logs/manager_info.log','INFO')
launch_logger('logs/manager_error.log','ERROR')
print('loggers initialised')

任何关于为什么会发生这种情况的线索? 谢谢。

解决方法

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

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

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