我正試圖在C#中編寫一個控制檯應用程序來讀取日誌文件。我面臨的問題是,這個日誌文件每隔1小時更新一次,例如,如果我在開始時有10行,之後是12,在第二次讀取時,我將不得不只讀取2個新添加的行。 你能否建議我一種有效的方法(無需再次讀取所有行,因爲日誌文件通常具有5000多行)?如何讀取在c#中每小時更新的日誌文件?
0
A
回答
2
首先,您可以使用FileSystemWatcher
在文件更改後發出通知。
你可以使用FileStream
和Seek
函數只准備新添加的行。在http://www.codeproject.com/Articles/7568/Tail-NET存在與Thread.Sleep
一個例子:
using (StreamReader reader = new StreamReader(new FileStream(fileName,
FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
//start at the end of the file
long lastMaxOffset = reader.BaseStream.Length;
while (true)
{
System.Threading.Thread.Sleep(100);
//if the file size has not changed, idle
if (reader.BaseStream.Length == lastMaxOffset)
continue;
//seek to the last max offset
reader.BaseStream.Seek(lastMaxOffset, SeekOrigin.Begin);
//read out of the file until the EOF
string line = "";
while ((line = reader.ReadLine()) != null)
Console.WriteLine(line);
//update the last max offset
lastMaxOffset = reader.BaseStream.Position;
}
}
+0
謝謝@Garath,你的解決方案對我有好處。我只是有一個問題。我用一個Console.WriteLine(lastMaxOffset)來查看我會得到什麼值,並且有一個數字,例如1911.你能告訴我這個值代表什麼? –
+0
它在文件中被抵消。所以下次文件流開始讀取這個值 –
相關問題
- 1. 如何在Perl中讀取持續更新的日誌文件?
- 2. 如何閱讀更新日誌文件
- 3. 從更新日誌文件中實時地逐行讀取
- 4. 如何在C++中讀取這個日誌文本文件
- 5. 如何在Java中每小時創建一個日誌文件
- 6. 如何從rsync日誌中獲取新的更新文件
- 7. 如何使用c讀取.sil(SmartInspect文件)日誌文件#
- 8. FastMM4,如何讀取日誌文件?
- 9. 如何從日誌文件中提取最近一小時的日誌
- 10. 在java中讀取日誌文件
- 11. C++ - 不斷讀取活動日誌文件的最新行
- 12. 如何讀取日誌從日誌文件,因爲它發生
- 13. 在日誌解析器中讀取IIS日誌文件
- 14. 如何從文件中讀取並在c#中更新它#
- 15. 你如何閱讀CPAN更新日誌?
- 16. c# - 從二進制日誌文件讀取,每12秒更新一次數據,每6秒鐘
- 17. 從bz2文件讀取日誌文件在objective-c
- 18. 每個IP每小時的Python日誌文件數
- 19. 如何使用C#讀取Azure Web作業日誌文件
- 20. 如何在ubuntu上每小時按大小輪換一個日誌文件?
- 21. c#,在msbuild日誌文件仍在寫入的情況下讀取msbuild日誌文件時遇到問題
- 22. 如何在日誌文件中獲取舊的日誌細節?
- 23. 閱讀日誌文件,因爲他們在更新中去
- 24. 如何在Junit測試中讀取日誌文件
- 25. 如何在Android中讀取系統日誌文件?
- 26. 如何在Cloud9中讀取Heroku日誌?
- 27. 如何在Heroku中讀取日誌?
- 28. jquery從文件中讀取文件時每2小時更換一次
- 29. 更改log4net配置創建每x小時新日誌
- 30. 如何查看日誌中每次提交的更改文件?
如果我正確理解你的問題,你可以嘗試以下方法:VAR nextLines = File.ReadLines( 「文件路徑」)跳過(lineCount)。 – Sean
@謝恩謝謝你的回答,我已經試過了,但是有朋友告訴我它仍然會讀取整個日誌文件,所以在5-10k行的情況下,它可能不是那麼高效。 –
也許不是。我想這取決於文件的大小 - Garath的答案也不是一個糟糕的路線。 – Sean