如何防止记录器写入stderr?

时间:2019-06-17 17:21:46

标签: python-3.x logging

我具有设置记录器的功能。


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。

谢谢。

0 个答案:

没有答案