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日志-循环日志(最后n个条目)_Python_Logging - Fatal编程技术网

Python日志-循环日志(最后n个条目)

Python日志-循环日志(最后n个条目),python,logging,Python,Logging,我知道Pythonlogging库允许您对多个日志文件进行“循环”日志记录。我所要做的只是简单地拥有一个文件,foo.log,正如Martijn所指出的那样,这种类型的日志管理起来很复杂,而且可能效率低下(尽管这可能与您有关,也可能与您无关) 解决部分低效率问题的一个简单方法是使用固定的记录长度。即,使每个日志条目具有相同的(最大)长度 另一种方法是基于日志数据库,只需为每个日志条目创建一个记录(变量或非变量)。让数据库管理器处理调整。从简单的(基于RAM的)数据库到真实的、基于磁盘的数据库,所

我知道Python
logging
库允许您对多个日志文件进行“循环”日志记录。我所要做的只是简单地拥有一个文件,
foo.log
,正如Martijn所指出的那样,这种类型的日志管理起来很复杂,而且可能效率低下(尽管这可能与您有关,也可能与您无关)

解决部分低效率问题的一个简单方法是使用固定的记录长度。即,使每个日志条目具有相同的(最大)长度

另一种方法是基于日志数据库,只需为每个日志条目创建一个记录(变量或非变量)。让数据库管理器处理调整。从简单的(基于RAM的)数据库到真实的、基于磁盘的数据库,所有这些都可以通过Python访问


如果您对基于内存的日志感到满意,另一种解决方案是查看FIFO文件。

您可以登录到文件,每行开头都有一个couter/时间

当您到达某一点时,只需再次从文件顶部进行更新

thefile = open('somebinfile', 'r+b')
thefile.seek(0)

要考虑的事情是,当你寻找顶部并写入文件时,你可能只会覆盖下一行,以说明你需要一个终止Char /String的唯一行。

这是一个非常低效的日志格式,因为一旦你达到了字节限制,每次添加一个新的行时都需要重写整个日志。当日志行的长度可变时,没有简单的方法从顶部删除行;每次要添加任何内容时,都会重写日志文件。您可以编写一个定制的日志处理程序,但是它的性能会非常糟糕,不值得这么做。
foo.log
-------
or
European
Swallow
thefile = open('somebinfile', 'r+b')
thefile.seek(0)