Użyłem logu System.Diagnostics.EventLog, aby wyświetlić dzienniki na lokalnym komputerze. Chciałbym jednak otworzyć zapisane archiwum dziennika zdarzeń (.evt lub .evtx) i wyświetlić dzienniki zawarte w zapisanym pliku. Potrzebuję tylko wyświetlić znaczniki czasu, wiadomości, źródła itp. Powiązane z dziennikami w pliku. Czy można to zrobić w języku C#?Jak otworzyć zapisane archiwum dzienników zdarzeń w .NET?
Odpowiedz
Sprawdź obszar nazw System.Diagnostics.Eventing.Reader
. W szczególności klasa EventLogQuery
.
http://msdn.microsoft.com/en-us/library/bb671200(v=VS.90).aspx
Spróbuj LogParser narzędzie firmy Microsoft. Może pobierać dowolne dane z dzienników dowolnego formatu dziennika przy użyciu języka SQL, np. Wybierając język. Można go również używać z dowolnej aplikacji .NET. Przykład analizowania dzienników CSV (Wierzę, że można użyć tego kodu do plików EVT z małymi modyfikacjami):
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;
}
Jeśli twoim zamiarem jest, aby odczytać zapisane dzienniki, możemy to zrobić za pomocą EventLogReader. Zasadniczo przyjmuje dwa parametry - nazwę pliku (jak w ścieżce pliku) i drugi parametr określający typ ścieżki. W celach informacyjnych, że masz zapisany plik .evtx - temp.evtx, można go przeczytać na przykład:
new EventLogReader(filepath, PathType.Filepath);
Daje to czytelnikowi dziennika zdarzeń, który może być wykorzystany do odczytu zdarzeń. Co więcej, jeśli chcesz odczytać zawartość z niego, możemy użyć właściwości, która jest w zasadzie listą ciągów. Potrafi ją przeczytać, przeanalizować i uzyskać wszelkie potrzebne informacje.
Zgadzam się, że nie mamy przepisu, aby bezpośrednio uzyskać wszystkie szczegóły, tak jak to, co otrzymujemy za pomocą EventLogEntry. Niemniej jednak, po prostu musimy przeprowadzić pewne analizy, aby uzyskać to, czego potrzebujemy, wykorzystując rekord zdarzeń.
- 1. Jak otworzyć stronę golang.org/x/net/websocket?
- 2. Jak kodować zapisane komentarze?
- 3. Nie można otworzyć dokumentu ".xib". Nie można odczytać archiwum
- 4. Jak otworzyć nowe okno w Windows Forms w .NET?
- 5. Co jest odpowiednikiem zdarzeń .NET w Ruby?
- 6. Udostępnione skompresowane archiwum
- 7. Jak wykonać polecenie zapisane w zmiennej?
- 8. Dzienniki archiwum NodeJS/Forever
- 9. W MongoDB, strategia zwiększania wydajności zapisów do dzienników dzienników
- 10. Jak uzyskać katalog dzienników JBoss
- 11. Jak szyfrować pliki dzienników log4net
- 12. Rozpakowywanie archiwum w systemie Windows 8
- 13. Wyłącz dziennik zdarzeń dla zdarzeń ActionCable
- 14. Jak napisać dziennik zdarzeń kategoria
- 15. Jak zbudować niestandardowy debugger, który dołącza do procesu .NET i nasłuchuje zdarzeń określonego typu?
- 16. Wyodrębnij hasło zapisane TortoiseSVN
- 17. Jak mogę wyodrębnić skompresowane archiwum w Perlu?
- 18. Jak zaktualizować jeden plik w archiwum zip?
- 19. Woocommerce: Jak usunąć "Archiwum" w tytule?
- 20. sesje dzienników flurry, ale nie zdarzenia (Android)
- 21. Rejestrowanie procedur obsługi zdarzeń .NET COM w języku C++
- 22. jak dołączyć zapisane dane do pliku?
- 23. IIS 8 - 500 dzienników błędów serwera
- 24. Strony archiwum autora w Jekyll
- 25. Zamień cienkie archiwum w zwykłe
- 26. Zapisane skrypty uiautomacja zapisywanie lokalizacji
- 27. Jak wyczyścić ekran tmux podczas pobierania dzienników?
- 28. Jak usunąć instrukcje debugowania dzienników z programu
- 29. Jak wykonać SQL Powrót z dzienników transakcji
- 30. Gdzie są zapisane makra przechowywane w Notepad ++?