Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 记录为一行的两条日志消息_Python_Logging - Fatal编程技术网

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—例如,日志中有一个。这个答案假设发出了两个日志事件,但事实并非如此。