gpt4 book ai didi

algorithm - 获取动态变化的日志文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:54 24 4
gpt4 key购买 nike

我面临的问题是否有某种奇特的名称,如“哲学家用餐问题”或“约瑟夫问题”等?这样我就可以对其进行一些研究。

我想在 Windows 中检索最新的日志文件。当日志文件已满(假设为 50MB)时,日志文件将更名为 log.2、log.3、log.4 ......等等,传入的日志将插入到 log.1 中。

现在,我有办法解决这个问题。如果最新文件 (log.1) 有任何更改,我会尝试间歇性地轮询服务器。但是,我很快发现 log.1 在不可预测的时间更改为 log.2,导致我错过了日志文件(因为如果 log.1 在其“修改日期”中有任何更改,我只会检索 log.1 "属性)。

我希望我可以给出某种寓言来使这易于理解。我能想到的最接近的事情是,频闪仪以未知频率卡住风扇,给人一种风扇正在卡住的错觉,但实际上风扇已经旋转了很多时间。您明白了要点。

提前致谢。

最佳答案

解决方案是让您的程序跟踪文件 log.1 和 log.2 的最后修改日期。轮询时,检查 log.2 的更改,然后检查 log.1 的更改。

大多数时候,log.2 不会改变。当它出现时,你在那里读取更新的数据,然后在 log.1 中读取更新的数据。在代码中,它看起来像这样:

DateTime log1ModifiedDate  // saved, and updated whenever it changes
DateTime log2ModifiedDate

if log2.DateModified != log2ModifiedDate
Read and process data from log.2
update log2ModifiedDate
if log1.DateModified != log1ModifiedDate
Read and process data from log.1
update log1ModifiedDate

我假设您的轮询频率足够高,log.1 不会翻转两次,以至于以前是 log.1 的文件现在是 log.3。如果您认为这可能发生,则必须检查 log.3 以及 log.2 和 log.1。

在 Windows 中处理此问题的另一种方法是实现文件更改通知,它会在目录中的文件更改时通知您。这些通知异步传送到您的程序。因此,您不是轮询,而是响应通知。在 .NET 中,您将使用 FileSystemWatcher .对于 Windows API,您将使用 FindFirstChangeNotification和相关的功能。 This CodeProject article举了一个不错的例子。

关于algorithm - 获取动态变化的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23470395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com