Istnieją pewne okoliczności w naszej aplikacji, w których wystąpiły błędy krytyczne i aplikacja odzyskała.Czy dopuszczalne jest zapisywanie w Źródle zdarzeń aplikacji?
Przykładem tego niepowodzenia jest poprawna identyfikacja niektórych nadających się do importowania towarów po zapełnieniu tych pozycji do listy wyboru. Błędy nie powodują awarii aplikacji, ale użytkownik zostanie ostrzeżony, że niektóre elementy nie zostały załadowane.
W takim przypadku błąd jest rejestrowany w dzienniku zdarzeń aplikacji jako ostrzeżenie. To nie-krytyczny błąd, z którego odzyskuje się aplikacja, ale rejestracja w dzienniku zdarzeń pozwala nam zobaczyć oryginalny błąd, jeśli zajdzie taka potrzeba.
Naszym problemem jest to, że oprogramowanie musi być możliwe do zainstalowania na koncie użytkownika zaawansowanego. Nie będąc kontem administracyjnym, nie będziemy mieć możliwości tworzenia niestandardowych źródeł zdarzeń dla aplikacji.
Celem jest zapisanie błędów zamiast źródła zdarzenia "Aplikacja" (które już istnieje w dzienniku zdarzeń aplikacji). Jednak spowoduje to dodanie tekstu podobnego do poniższego.
Opis identyfikatora zdarzenia 0 ze źródła Aplikacja nie może zostać znaleziona. Element, który wywołuje to zdarzenie, nie jest zainstalowany na komputerze lokalnym lub instalacja jest uszkodzona. Możesz zainstalować lub naprawić komponent na lokalnym komputerze.
Dzieje się tak, ponieważ identyfikator zdarzenia ma wartość 0, gdy go piszemy. Takie podejście wykona zadanie, ale czy istnieje lepszy sposób? Czy istnieje sposób, aby określić identyfikator zdarzenia dla źródła zdarzenia aplikacji, aby wskazać, że pochodzi on z naszej aplikacji?
Zrobiłem kilka odczytów: Identyfikator zdarzenia w połączeniu ze źródłem zdarzeń określa, jakie zdarzenie ma miejsce. W skrócie: Nie mam nic przeciwko ostrzeżeniu o błędzie, ale nie powinienem używać źródła, którego nie stworzyłem. Nie jestem w stanie go utworzyć (instalacja bez administratora itp.), Więc mam nadzieję znaleźć źródło zdarzeń dostępne dla tego rodzaju zdarzeń lub użyć innego mechanizmu logowania. Myśli? – MoSlo
Jeśli korzystasz z .NET 4.5, możesz użyć klasy EventSource (http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) do zapisywania zdarzeń do ETW bez konieczności rejestracji . Minusem jest to, że zdarzenia nie są zapisywane w dzienniku zdarzeń, więc jeśli nie będziesz aktywnie słuchać tych wydarzeń, nie dostaniesz ich. – fsimonazzi