Porady: rejestrowanie informacji o usługach
Uwaga
Ten artykuł nie dotyczy hostowanych usług na platformie .NET. Aby uzyskać najnowszą zawartość w usługach systemu Windows przy użyciu Microsoft.Extensions.Hosting.BackgroundService i szablonie usługi procesu roboczego, zobacz:
Domyślnie wszystkie projekty usługi systemu Windows mają możliwość interakcji z dziennikiem zdarzeń aplikacji oraz zapisywaniem informacji i wyjątków. Właściwość służy AutoLog do wskazywania, czy ta funkcja ma być używana w aplikacji. Domyślnie rejestrowanie jest włączone dla dowolnej usługi tworzonej za pomocą szablonu projektu Usługi systemu Windows. Możesz użyć statycznej formy EventLog klasy do zapisywania informacji o usłudze w dzienniku bez konieczności tworzenia wystąpienia EventLog składnika lub ręcznego rejestrowania źródła.
Instalator usługi automatycznie rejestruje każdą usługę w projekcie jako prawidłowe źródło zdarzeń w dzienniku aplikacji na komputerze, na którym jest zainstalowana usługa, po włączeniu rejestrowania. Usługa rejestruje informacje za każdym razem, gdy usługa jest uruchamiana, zatrzymywana, wstrzymana, wznawiana, zainstalowana lub odinstalowana. Rejestruje również wszelkie błędy, które wystąpiły. Nie trzeba pisać żadnego kodu w celu zapisania wpisów w dzienniku podczas korzystania z domyślnego zachowania; usługa obsługuje to automatycznie.
Jeśli chcesz zapisać w dzienniku zdarzeń innym niż dziennik aplikacji, musisz ustawić AutoLog właściwość na false
, utworzyć własny niestandardowy dziennik zdarzeń w kodzie usług i zarejestrować usługę jako prawidłowe źródło wpisów dla tego dziennika. Następnie musisz napisać kod do rejestrowania wpisów w dzienniku za każdym razem, gdy wystąpi interesująca cię akcja.
Uwaga
Jeśli używasz niestandardowego dziennika zdarzeń i skonfigurujesz aplikację usługi do zapisywania w nim, nie możesz próbować uzyskać dostępu do dziennika zdarzeń przed ustawieniem właściwości usługi ServiceName w kodzie. Dziennik zdarzeń wymaga wartości tej właściwości, aby zarejestrować usługę jako prawidłowe źródło zdarzeń.
Aby włączyć domyślne rejestrowanie zdarzeń dla usługi
AutoLog Ustaw właściwość składnika na
true
.Uwaga
Domyślnie wartość tej właściwości to
true
. Nie trzeba ustawiać tego jawnie, chyba że tworzysz bardziej złożone przetwarzanie, takie jak ocena warunku, a następnie ustawienie AutoLog właściwości na podstawie wyniku tego warunku.
Aby wyłączyć rejestrowanie zdarzeń dla usługi
AutoLog Ustaw właściwość składnika na
false
.AutoLog = false;
Me.AutoLog = False
Aby skonfigurować rejestrowanie w dzienniku niestandardowym
Ustaw właściwość AutoLog na
false
.Uwaga
Aby użyć dziennika niestandardowego, należy ustawić wartość AutoLog false.
Skonfiguruj wystąpienie EventLog składnika w aplikacji usługi systemu Windows.
Utwórz dziennik niestandardowy, wywołując CreateEventSource metodę i określając ciąg źródłowy oraz nazwę pliku dziennika, który chcesz utworzyć.
Source Ustaw właściwość w wystąpieniu EventLog składnika na ciąg źródłowy utworzony w kroku 3.
Zapisz wpisy, korzystając WriteEntry z metody w wystąpieniu EventLog składnika.
Poniższy kod pokazuje, jak skonfigurować rejestrowanie w dzienniku niestandardowym.
Uwaga
W tym przykładzie kodu wystąpienie EventLog składnika ma nazwę
eventLog1
(EventLog1
w Visual Basic). Jeśli wystąpienie zostało utworzone z inną nazwą w kroku 2, zmień odpowiednio kod.public UserService2() { _eventLog1 = new EventLog(); // Turn off autologging AutoLog = false; // create an event source, specifying the name of a log that // does not currently exist to create a new, custom log if (!EventLog.SourceExists("MySource")) { EventLog.CreateEventSource( "MySource", "MyLog"); } // configure the event log instance to use this source name _eventLog1.Source = "MySource"; _eventLog1.Log = "MyLog"; }
Public Sub New() ' Turn off autologging Me.AutoLog = False ' Create a new event source and specify a log name that ' does not exist to create a custom log If Not System.Diagnostics.EventLog.SourceExists("MySource") Then System.Diagnostics.EventLog.CreateEventSource("MySource", "MyLog") End If ' Configure the event log instance to use this source name EventLog1.Source = "MySource" End Sub
protected override void OnStart(string[] args) { // write an entry to the log _eventLog1.WriteEntry("In OnStart."); }
Protected Overrides Sub OnStart(ByVal args() As String) ' Write an entry to the log you've created. EventLog1.WriteEntry("In Onstart.") End Sub