Sdílet prostřednictvím


Postupy: Zaznamenávání informací o službách

Poznámka:

Tento článek se nevztahuje na hostované služby v .NET. Nejnovější obsah ve službách Windows používajících Microsoft.Extensions.Hosting.BackgroundService a šablonu Pracovní služba najdete v tématech:

Ve výchozím nastavení mají všechny projekty služby Systému Windows možnost pracovat s protokolem událostí aplikace a zapisovat informace a výjimky. Tuto vlastnost použijete AutoLog k označení, zda chcete tuto funkci ve své aplikaci použít. Ve výchozím nastavení je protokolování zapnuté pro libovolnou službu, kterou vytvoříte pomocí šablony projektu služby systému Windows. Statickou formu třídy můžete použít k zápisu EventLog informací o službě do protokolu, aniž byste museli vytvořit instanci EventLog komponenty nebo ručně zaregistrovat zdroj.

Instalační program pro vaši službu automaticky zaregistruje každou službu v projektu jako platný zdroj událostí s protokolem aplikace v počítači, na kterém je služba nainstalovaná, když je protokolování zapnuté. Služba protokoluje informace při každém spuštění, zastavení, pozastavení, obnovení, instalaci nebo odinstalaci služby. Protokoluje také všechna selhání, ke kterým dochází. Při použití výchozího chování nemusíte psát žádný kód pro zápis položek do protokolu; služba to za vás zpracuje automaticky.

Pokud chcete zapisovat do jiného protokolu událostí než do protokolu aplikace, musíte vlastnost nastavit AutoLog na false, vytvořit vlastní protokol událostí v kódu služeb a zaregistrovat službu jako platný zdroj položek pro tento protokol. Potom musíte napsat kód pro záznam položek do protokolu, kdykoli dojde k akci, která vás zajímá.

Poznámka:

Pokud používáte vlastní protokol událostí a nakonfigurujete aplikaci služby tak, aby do ní zapisovat, nesmíte se před nastavením vlastnosti služby ServiceName v kódu pokoušet o přístup k protokolu událostí. Protokol událostí potřebuje hodnotu této vlastnosti k registraci vaší služby jako platného zdroje událostí.

Povolení výchozího protokolování událostí pro vaši službu

  • AutoLog Nastavte vlastnost komponenty na truehodnotu .

    Poznámka:

    Ve výchozím nastavení je tato vlastnost nastavena na truehodnotu . Toto nastavení nemusíte explicitně nastavit, pokud nevytváření složitějšího zpracování, například vyhodnocení podmínky a následné nastavení AutoLog vlastnosti na základě výsledku této podmínky.

Zakázání protokolování událostí pro vaši službu

  • AutoLog Nastavte vlastnost komponenty na falsehodnotu .

    AutoLog = false;
    
    Me.AutoLog = False
    

Nastavení protokolování do vlastního protokolu

  1. Nastavte vlastnost AutoLog na false.

    Poznámka:

    Pokud chcete použít vlastní protokol, musíte nastavit AutoLog hodnotu false.

  2. Nastavte instanci EventLog komponenty v aplikaci služby systému Windows.

  3. Vytvořte vlastní protokol voláním CreateEventSource metody a zadáním zdrojového řetězce a názvu souboru protokolu, který chcete vytvořit.

  4. Source Nastavte vlastnost EventLog instance komponenty na zdrojový řetězec, který jste vytvořili v kroku 3.

  5. Zápis položek přístupem k WriteEntry metodě v EventLog instanci komponenty.

    Následující kód ukazuje, jak nastavit protokolování do vlastního protokolu.

    Poznámka:

    V tomto příkladu kódu je instance EventLog komponenty pojmenována eventLog1 (EventLog1 v jazyce Visual Basic). Pokud jste vytvořili instanci s jiným názvem v kroku 2, odpovídajícím způsobem změňte kód.

    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
    

Viz také