Udostępnij za pośrednictwem


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

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

    Uwaga

    Aby użyć dziennika niestandardowego, należy ustawić wartość AutoLog false.

  2. Skonfiguruj wystąpienie EventLog składnika w aplikacji usługi systemu 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. Source Ustaw właściwość w wystąpieniu EventLog składnika na ciąg źródłowy utworzony w kroku 3.

  5. 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
    

Zobacz też