我具有设置记录器的功能。
def setup_logger(logger_name, log_file=None, stream=None, level=logging.DEBUG):
'''
Setup a Logger
'''
logger = logging.getLogger(logger_name)
logger.handlers = []
formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
if log_file:
fileHandler = logging.FileHandler(log_file, mode='w')
fileHandler.setFormatter(formatter)
fileHandler.setLevel(level)
logger.addHandler(fileHandler)
if stream:
streamHandler = logging.StreamHandler()
streamHandler.setFormatter(formatter)
streamHandler.setLevel(level)
logger.addHandler(streamHandler)
return logger
上面说,我使用以下命令定义记录器,
my_logger = setup_logger('my_logger', '/tmp/my_logger.log')
my_logger.info('This should not appear on stderr')
然后,输出应仅转到日志文件,而不是stdout或stderr。但是,我也总是在stderr上获得输出,它与我打算用来跟踪另一个任务的进度的progressbar
混为一谈。知道如何不将输出写入stderr吗?
我正在使用python 3.7.3。
谢谢。