Instrukcje: rejestrowanie informacji o usługach

Uwaga / Notatka

Ten artykuł nie dotyczy hostowanych usług na platformie .NET. Aby uzyskać najnowszą zawartość dotyczącą usług systemu Windows przy użyciu Microsoft.Extensions.Hosting.BackgroundService i szablonu usługi roboczej, zobacz:

Domyślnie wszystkie projekty usługi systemu Windows mają możliwość interakcji z dziennikiem zdarzeń aplikacji oraz zapisywaniem informacji i wyjątków. Używasz właściwości AutoLog, aby wskazać, czy chcesz tę funkcjonalność w swojej 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 swojej usługi i zarejestrować swoją usługę jako prawidłowe źródło wpisów do 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 / Notatka

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

  • Ustaw właściwość AutoLog dla swojego składnika na true.

    Uwaga / Notatka

    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

  • Ustaw właściwość AutoLog w swoim składniku na false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Aby skonfigurować rejestrowanie w dzienniku niestandardowym

  1. Ustaw właściwość AutoLog na false.

    Uwaga / Notatka

    Aby użyć dziennika niestandardowego, należy ustawić wartość AutoLog na fałszywą.

  2. Skonfiguruj instancję składnika EventLog w aplikacji usługi Windows.

  3. 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ć.

  4. Ustaw właściwość Source dla wystąpienia składnika EventLog na ciąg źródłowy utworzony w kroku 3.

  5. Zapisz wpisy, korzystając z metody WriteEntry na wystąpieniu składnika EventLog.

    Poniższy kod pokazuje, jak skonfigurować rejestrowanie w dzienniku niestandardowym.

    Uwaga / Notatka

    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
    

Zobacz także