我已經使用System.Diagnostics.EventLog查看本地計算機上的日誌。但是,我想打開保存的事件日誌歸檔文件(.evt或.evtx)並查看保存文件中包含的日誌。我只需要查看與文件中的日誌關聯的時間戳,消息,來源等。這可以在C#中完成嗎?如何在.NET中打開保存的事件日誌歸檔?
12
A
回答
10
檢出System.Diagnostics.Eventing.Reader
命名空間。具體是EventLogQuery
班。
http://msdn.microsoft.com/en-us/library/bb671200(v=VS.90).aspx
2
嘗試從微軟LogParser工具。它可以使用類似SQL的選擇語言從任何日誌格式的日誌中獲取任何數據。它也可以用於任何.NET應用程序。 CSV日誌的例子解析(我相信你可以使用此代碼與小的修改EVT文件):
public IList<LogRow> GetLog()
{
return Load("SELECT *, OUT_ROW_NUMBER() FROM logfile*.log WHERE Field2='Performance' ORDER BY Field1 ASC");
}
private static IList<LogRow> Load(string sql)
{
IEnumerable<string[]> log = ParseLog(sql);
return Convert(log);
}
private static IList<LogRow> Convert(IEnumerable<string[]> log)
{
return log.Select(logRecord => new LogRow
{
TimeStamp = logRecord[2],
Category = logRecord[3],
Machine = logRecord[4],
ThreadId = logRecord[5],
ProcessId = logRecord[6],
ProcessName = logRecord[7],
DomainName = logRecord[8],
Message = logRecord[9],
Number = logRecord[10]
}).ToList();
}
private static IEnumerable<string[]> ParseLog(string query)
{
var records = new LogQueryClassClass().Execute(
query,
new COMCSVInputContextClass { headerRow = false, iTsFormat = "yyyy-MM-dd HH:mm:ss.fff" });
var entries = new List<string[]>();
while (!records.atEnd())
{
entries.Add(records.getRecord().toNativeString("CSVseparator").Split(
new[] { "CSVseparator" },
StringSplitOptions.None));
records.moveNext();
}
records.close();
return entries;
}
0
如果你的目的是要讀取保存的日誌信息,我們可以使用EventLogReader做到這一點。它基本上有兩個參數 - 文件名(如在文件路徑中)和第二個參數指定路徑類型。供您參考,說你有一個保存文件採用.evtx - temp.evtx,你可以把它讀作在:
new EventLogReader(filepath, PathType.Filepath);
這給你一個事件日誌讀取器,它可以用來讀取事件。此外,如果您想要從中讀取內容,我們可以使用基本上是字符串列表的屬性。可以閱讀它,解析它,並獲取所需的任何信息。
我同意我們沒有提供直接獲取所有細節的規定,就像我們使用EventLogEntry所得到的一樣。從來沒有,我們只需要做一些解析來獲得我們需要使用事件記錄。
相關問題
- 1. 保存和打開日誌文件
- 2. 如何閱讀歸檔的事件日誌文件?
- 3. logrotate歸檔dateext歸檔日誌文件
- 4. Cassandra:如何歸檔日誌文件
- 5. n日誌文件歸檔
- 6. 如何解析和刪除Powershell中的存檔事件日誌
- 7. 如何打開從VBA歸檔文件而不解壓存檔
- 8. Odoo - 日誌歸檔?
- 9. 歸檔單個歸檔中的多個日誌文件
- 10. PHP error_log中()歸檔日誌文件
- 11. 如何以編程方式打開事件日誌(.net,Windows 7 x64)?
- 12. 如何修改vbs以存檔事件日誌
- 13. 保存歸檔的文檔文件夾
- 14. Cassandra - 歸檔提交日誌
- 15. 如何在vb.net中保存打開的word文檔
- 16. 如何以編程方式打開事件日誌?
- 17. 如何打開SQL Server事務日誌文件(LDF)?
- 18. 保持日誌文件打開與每次打開它
- 19. .Net/Windows事件日誌:當設置「根據需要覆蓋事件」時,如何保留特定日誌
- 20. 在rails中保存用戶事件的日誌
- 21. 如何打開保存在內存中
- 22. 如何使用Log4Net實現日誌文件的自動歸檔
- 23. Serilog:打開日誌文件
- 24. IOError打開日誌文件
- 25. 如何在Linux中的文件中保存日誌輸出
- 26. 如何將Symbian設備日誌打印或保存到文件
- 27. 如何將事件日誌存儲在文件夾中
- 28. 如何在使用Integration Service IIB時保存開始日誌和結束日誌?
- 29. 如何在日誌中打破事件信息
- 30. 「無法打開日誌的源代碼」 - Windows 7 - .NET的Web服務 - 事件日誌