2010-12-09 69 views
2

这特定于创建日志文件。当我使用我的应用程序连接到服务器时,它会将详细信息写入日志文件。当日志文件达到特定的大小,比如1MB,然后我创建另一个名为LOG2.log的文件。如何从目录中获取最新文件

现在写回日志文件时,有两个或更多的日志文件,我想拿起最新的一个。我不想遍历该目录中的所有文件,并拿起文件,因为这需要处理时间,还有其他方法可以获取目录中最后创建的文件或日志文件。

回答

3

你最好的赌注是旋转日志文件,这是获取的Unix进行正常

一种可能的实现是保持10(通过cron一般。) (或者很多)旧日志文件,如果程序检测到Log.log超过1MB,则将Log09.log移动到Log10.log,Log08.log移动到Log09.log,7到8,6到7 ... 2到3,然后Log.log到Log02.log。最后,创建一个新的Log.log文件并继续录制。

这样你总是会写入Log.log,并且没有文件系统的奥秘。从理论上讲,这种方法可以扩展到荒谬的日志文件数量(比以往任何时候都合理),比写Log3023.log更为标准。另外,人们总是知道在哪里可以找到当前日志。

1

我相信答案是“僵硬”。你必须迭代并自己找到最近的一个,因为操作系统不会为每个可能的排序顺序保留索引,以避免有人可能需要它们。

0

你能修改服务器吗?如果是这样,可能引入一个LASTLOG.log文件,其中包含最新日志文件的名称或其实际内容。

否则,托尼的权利..没有真正的方法来做它,而不是迭代通过自己。

0

如何优雅:

ls -t | head -n 1 
+3

对于一个问题标记C++和Windows ...听起来像一个良好的治愈疾病的所有方式... :-) – 2010-12-09 07:36:24

0

最有效的方法是使用一个专门的功能要经过所有条目(如NTFS或FAT通过时间不索引),而忽略你不需要的东西。为此,请致电FindFirstFileEx,并提供信息等级FindExInfoBasic。这跳过了8.3名称解析。