Tôi đã sử dụng System.Diagnostics.EventLog để xem nhật ký trên máy tính cục bộ. Tuy nhiên, tôi muốn mở một kho lưu trữ bản ghi sự kiện đã lưu (.evt hoặc .evtx) và xem các nhật ký được chứa trong tệp đã lưu. Tôi chỉ cần xem dấu thời gian, thư, nguồn, v.v. được liên kết với nhật ký trong tệp. Điều này có thể được thực hiện trong C#?Làm thế nào để mở lưu trữ bản ghi sự kiện đã lưu trong .NET?
Trả lời
Kiểm tra không gian tên System.Diagnostics.Eventing.Reader
. Cụ thể là lớp EventLogQuery
.
http://msdn.microsoft.com/en-us/library/bb671200(v=VS.90).aspx
Hãy thử LogParser công cụ từ Microsoft. Nó có thể tìm nạp bất kỳ dữ liệu nào từ nhật ký của bất kỳ định dạng nhật ký nào bằng cách sử dụng ngôn ngữ chọn giống SQL. Nó cũng có thể được sử dụng từ bất kỳ ứng dụng .NET nào. Ví dụ phân tích của các bản ghi CSV (Tôi tin rằng bạn có thể sử dụng mã này cho các tập tin EVT với những thay đổi nhỏ):
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;
}
Nếu mục đích của bạn là để đọc các bản ghi lưu lại, chúng ta có thể làm điều đó bằng EventLogReader. Về cơ bản nó lấy hai tham số - tên tệp (như trong đường dẫn tệp) và tham số thứ hai chỉ định loại đường dẫn. Để bạn tham khảo, nói rằng bạn có một tập tin .evtx lưu - temp.evtx, bạn có thể đọc nó như trong:
new EventLogReader(filepath, PathType.Filepath);
này cung cấp cho bạn một trình đọc ghi sự kiện, có thể được sử dụng để đọc các sự kiện. Và hơn thế nữa, nếu bạn muốn đọc nội dung của nó, chúng ta có thể sử dụng Properties mà về cơ bản là một danh sách chuỗi. Có thể đọc nó, phân tích nó và nhận bất kỳ thông tin nào bạn cần.
Tôi đồng ý rằng chúng tôi không có quy định để trực tiếp nhận tất cả các chi tiết giống như những gì chúng tôi nhận được khi sử dụng EventLogEntry. Không bao giờ ít hơn, chúng tôi chỉ cần thực hiện một số phân tích cú pháp để có được những gì chúng tôi cần bằng cách sử dụng bản ghi sự kiện.
- 1. Cách lưu trữ nhật ký sự kiện trong Thư mục
- 2. Làm thế nào để lưu trữ các bộ đối tượng đã xảy ra cùng nhau trong các sự kiện?
- 3. Làm thế nào để lưu một thủ tục lưu trữ?
- 4. Vùng lưu trữ git lưu trữ tệp như thế nào?
- 5. Làm thế nào để lưu trữ CGGradientRef trong NSMutableArray
- 6. Lưu trữ mật khẩu đã lưu trong ứng dụng Mã nguồn mở
- 7. Làm thế nào để lưu trữ unicode trong MySQL?
- 8. Lưu trữ URL video đã ghi để lưu vào thư viện sau
- 9. Lưu trữ bảng Azure có bản ghi cuối cùng
- 10. Git: Làm thế nào để lưu trữ từ kho lưu trữ từ xa trực tiếp?
- 11. Làm thế nào để lưu trữ một subtask trong Asana?
- 12. Mất bao lâu để lưu trữ bản ghi lưu lượng truy cập máy chủ web?
- 13. Làm thế nào để thay đổi nơi lưu trữ Subversion được lưu trữ?
- 14. Làm cách nào để lưu trữ các bản ghi được nhóm thành nhiều tệp với Pig?
- 15. Lưu trữ Smalltalk đã mất ở đâu?
- 16. Làm thế nào để lưu trữ đầu ra của recv()?
- 17. Làm cách nào để mở rộng Chặn CMS khi lưu sự kiện của Magento?
- 18. Sự khác biệt ngữ nghĩa giữa lưu/ghi/lưu trữ và đọc/tải?
- 19. Trình xử lý sự kiện lưu trữ HTML5/JS
- 20. Kịch bản lưu trữ SQL
- 21. Làm thế nào để thực hiện các lưu trữ dữ liệu WCF Tự lưu trữ (http: // localhost: 1234/myDataService.svc/...)
- 22. Git lưu trữ tệp như thế nào?
- 23. Làm thế nào để tạm dừng/tiếp tục nhân bản kho lưu trữ trong mercurial?
- 24. Làm thế nào để mô phỏng một bản in trong một thủ tục lưu trữ MySQL
- 25. Làm thế nào để bước qua kho lưu trữ git?
- 26. Làm thế nào để phiên bản dữ liệu kiểm soát được lưu trữ trong mysql
- 27. Làm thế nào để lưu trữ thư sử dụng ruby 'net/imap`
- 28. Làm thế nào để lưu trữ HashMap trên Android?
- 29. Làm thế nào để lưu trữ văn bản được định dạng trong bảng MySQL?
- 30. Subversion lưu trữ các tệp trong kho lưu trữ như thế nào?