Dela via


Anvisningar: Logga information om tjänster

Kommentar

Den här artikeln gäller inte för värdbaserade tjänster i .NET. Det senaste innehållet i Windows-tjänster med hjälp av Microsoft.Extensions.Hosting.BackgroundService och arbetstjänstmallen finns i:

Som standard har alla Windows Service-projekt möjlighet att interagera med programhändelseloggen och skriva information och undantag till den. Du använder egenskapen AutoLog för att ange om du vill ha den här funktionen i ditt program. Som standard aktiveras loggning för alla tjänster som du skapar med Windows Service-projektmallen. Du kan använda en statisk form av EventLog klassen för att skriva tjänstinformation till en logg utan att behöva skapa en instans av en EventLog komponent eller registrera en källa manuellt.

Installationsprogrammet för din tjänst registrerar automatiskt varje tjänst i projektet som en giltig händelsekälla med programloggen på datorn där tjänsten är installerad när loggningen är aktiverad. Tjänsten loggar information varje gång tjänsten startas, stoppas, pausas, återupptas, installeras eller avinstalleras. Den loggar även eventuella fel som inträffar. Du behöver inte skriva någon kod för att skriva poster i loggen när du använder standardbeteendet. tjänsten hanterar detta åt dig automatiskt.

Om du vill skriva till en annan händelselogg än programloggen AutoLog måste du ange egenskapen till false, skapa en egen anpassad händelselogg i tjänstkoden och registrera tjänsten som en giltig källa för poster för loggen. Du måste sedan skriva kod för att registrera poster i loggen när en åtgärd som du är intresserad av inträffar.

Kommentar

Om du använder en anpassad händelselogg och konfigurerar tjänstprogrammet för att skriva till den får du inte försöka komma åt händelseloggen innan du anger tjänstens ServiceName egenskap i koden. Händelseloggen behöver den här egenskapens värde för att registrera tjänsten som en giltig händelsekälla.

Aktivera standardhändelseloggning för din tjänst

  • Ange egenskapen för komponenten AutoLog till true.

    Kommentar

    Som standard är den här egenskapen inställd på true. Du behöver inte ange detta explicit om du inte skapar mer komplex bearbetning, till exempel utvärdera ett villkor och sedan ange AutoLog egenskapen baserat på resultatet av det villkoret.

Inaktivera händelseloggning för din tjänst

  • Ange egenskapen för komponenten AutoLog till false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Så här konfigurerar du loggning till en anpassad logg

  1. Ange egenskapen AutoLog till false.

    Kommentar

    Du måste ange AutoLog false för att kunna använda en anpassad logg.

  2. Konfigurera en instans av en EventLog komponent i ditt Windows Service-program.

  3. Skapa en anpassad logg genom att anropa CreateEventSource metoden och ange källsträngen och namnet på den loggfil som du vill skapa.

  4. Source Ange egenskapen för komponentinstansen EventLog till källsträngen som du skapade i steg 3.

  5. Skriv dina poster genom att WriteEntry komma åt metoden på komponentinstansen EventLog .

    Följande kod visar hur du konfigurerar loggning till en anpassad logg.

    Kommentar

    I det här kodexemplet heter eventLog1 en instans av en EventLog komponent (EventLog1 i Visual Basic). Om du har skapat en instans med ett annat namn i steg 2 ändrar du koden i enlighet med detta.

    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
    

Se även