Gui*_*hon 13 python logging tqdm
我有一个简单的问题:如何将内置的Python记录器的print功能更改为tqdm.write使得记录消息不会干扰tqdm的进度条?谢谢!
tho*_*efe 67
tqdm现在有一个内置的上下文管理器用于重定向记录器:
import logging
from tqdm import trange
from tqdm.contrib.logging import logging_redirect_tqdm
LOG = logging.getLogger(__name__)
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
with logging_redirect_tqdm():
for i in trange(9):
if i == 4:
LOG.info("console logging redirected to `tqdm.write()`")
# logging restored
Run Code Online (Sandbox Code Playgroud)
Rol*_*Kau 22
您需要一个自定义日志处理程序
import logging
import tqdm
class TqdmLoggingHandler(logging.Handler):
def __init__(self, level=logging.NOTSET):
super().__init__(level)
def emit(self, record):
try:
msg = self.format(record)
tqdm.tqdm.write(msg)
self.flush()
except (KeyboardInterrupt, SystemExit):
raise
except:
self.handleError(record)
Run Code Online (Sandbox Code Playgroud)
然后将其添加到日志链:
import time
log = logging.getLogger (__name__)
log.setLevel (logging.INFO)
log.addHandler (TqdmLoggingHandler ())
for i in tqdm.tqdm (range (100)):
if i == 50:
log.info ("Half-way there!")
time.sleep (0.1)
Run Code Online (Sandbox Code Playgroud)
编辑:修复了对超级TqdmLoggingHandler的init方法的调用中的错误,这是由努力的读者@BlaineRogers在评论中指出的.(如果有人想进一步阅读这个关于Python的阴暗区域,我推荐https://fuhm.net/super-harmful/)
| 归档时间: |
|
| 查看次数: |
6330 次 |
| 最近记录: |