Python 记录为一行的两条日志消息
我正在从脚本中到处使用Python 记录为一行的两条日志消息,python,logging,Python,Logging,我正在从脚本中到处使用print()语句迁移到更严格的日志系统。我正在使用日志记录模块来管理任务。但有一件事我似乎无法实现: 在某些情况下,我希望在两个不同的步骤中创建一个日志条目,但记录在同一行中。经典的外观如下: Initiating procedure... OK 在这种情况下,仅当任务成功时才会记录OK部分 我使用以下打印命令来实现这一点: print('Initiating procedure... ', end="", flush=True) ... print('OK') 有没
print()
语句迁移到更严格的日志系统。我正在使用日志记录
模块来管理任务。但有一件事我似乎无法实现:
在某些情况下,我希望在两个不同的步骤中创建一个日志条目,但记录在同一行中。经典的外观如下:
Initiating procedure... OK
在这种情况下,仅当任务成功时才会记录OK
部分
我使用以下打印命令来实现这一点:
print('Initiating procedure... ', end="", flush=True)
...
print('OK')
有没有办法通过日志记录
模块实现类似的功能?差不多
logging.info("First message", end="", flush=True)
...
logging.info("OK")
我不确定这是个好主意。我不认为日志应该这样使用。您经常会在日志消息之前看到有关日期、时间和日志消息性质的信息 你真的想要这样一行吗:
INFO:ROOT 2018-09-01 22:12:13 Initiating procedure... INFO:ROOT 2018-09-01 22:12:17 OK
在同一条线上
通常,您会使用其他技术解析日志(我经常使用awk解析日志),我相信我会对此类日志感到非常不安。您可以使用
缓冲处理程序(如a)和自定义格式化程序来实现所需的功能。这种方法会在内存中缓冲记录,直到刷新为止,刷新会写入目标处理程序,并允许您将两个日志记录潜在地合并到一个输出事件中。这应该是一个注释,而不是建议的答案。许多日志框架都提供这种功能,包括stdlib—例如,日志中有一个。这个答案假设发出了两个日志事件,但事实并非如此。