我正在使用 VSCode 执行 python 脚本,在里面我正在进行大量迭代来检查某些内容是否通过或失败,问题是终端中有很多信息(日志记录),我需要的是如果脚本运行时 X 迭代中出现故障,则在其他终端中打印特定信息以查看当前状态。
比方说:
import logging
for i in range(1000)
# do stuff
if something == my_variable:
logging.info('pass')
else:
logging.error('fail')
print(f'Error in {my_variable} in cycle {i}') #This is what i need in terminal 2
所以基本上是打开或拆分两个 vscode 窗口,其中第二个终端仅显示代码示例中的打印
您可以创建一个记录器并将日志发送到多个不同的处理程序。您可以设置记录器的级别,然后将流设置为不同的调试级别。
在下面的代码中,我登录到流处理程序(终端):info()、warning()、error() 和 critical()
Filehandler 将仅记录 error() 和 critical()
在 nix 系统中,您可以观察终端代码,然后在另一个终端中,您可以
tail -f log.txt
观察更高错误的输出。
import logging
# set up Logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# Add Handlers
sh = logging.StreamHandler()
fh = logging.FileHandler("log.txt", "w")
fh.setLevel(logging.ERROR)
logger.addHandler(sh)
logger.addHandler(fh)
for i in range(1000):
# do stuff
if i % 2 == 0:
logger.info('pass')
else:
logger.error('fail')
logger.error(f'Error in in cycle {i}') #This is what i need in terminal 2
因为你有窗口,所以我会以不同的颜色流式传输第二个处理程序:
fh = logging.StreamHandler()
fh.setLevel(logging.ERROR)
fh.formatter = logging.Formatter("\x1b[31;1m %(message)s \x1b[0m")
每个终端窗口(或选项卡)都分配有一个虚拟终端,您可以使用命令
tty
找到它。现在假设您希望记录变量的终端是 /dev/ttys0001
。在这种情况下,请在 Python 程序中将日志信息写入文件 /dev/ttys0001
。