2010-12-09 56 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名稱解析。

相關問題