Delen via


Procedure: Logboekinformatie over services

Notitie

Dit artikel is niet van toepassing op gehoste services in .NET. Zie voor de nieuwste inhoud van Windows-services die gebruikmaken van Microsoft.Extensions.Hosting.BackgroundService en de worker-servicesjabloon:

Standaard hebben alle Windows-serviceprojecten de mogelijkheid om te communiceren met het gebeurtenislogboek van de toepassing en informatie en uitzonderingen erop te schrijven. U gebruikt de AutoLog eigenschap om aan te geven of u deze functionaliteit in uw toepassing wilt gebruiken. Logboekregistratie is standaard ingeschakeld voor elke service die u maakt met de windows-serviceprojectsjabloon. U kunt een statische vorm van de EventLog klasse gebruiken om servicegegevens naar een logboek te schrijven zonder dat u een exemplaar van een EventLog onderdeel hoeft te maken of een bron handmatig moet registreren.

Het installatieprogramma voor uw service registreert elke service in uw project automatisch als een geldige bron van gebeurtenissen met het toepassingslogboek op de computer waarop de service is geïnstalleerd, wanneer logboekregistratie is ingeschakeld. De service registreert gegevens telkens wanneer de service wordt gestart, gestopt, onderbroken, hervat, geïnstalleerd of verwijderd. Ook worden eventuele fouten die optreden, in een logboek opgeslagen. U hoeft geen code te schrijven om vermeldingen naar het logboek te schrijven wanneer u het standaardgedrag gebruikt; de service verwerkt dit automatisch voor u.

Als u wilt schrijven naar een ander gebeurtenislogboek dan het toepassingslogboek, moet u de AutoLog eigenschap falseinstellen op, uw eigen aangepaste gebeurtenislogboek maken in uw servicescode en uw service registreren als een geldige bron van vermeldingen voor dat logboek. Vervolgens moet u code schrijven om vermeldingen in het logboek vast te leggen wanneer er een actie wordt uitgevoerd waarin u geïnteresseerd bent.

Notitie

Als u een aangepast gebeurtenislogboek gebruikt en uw servicetoepassing configureert om ernaar te schrijven, moet u geen toegang proberen te krijgen tot het gebeurtenislogboek voordat u de eigenschap van ServiceName de service in uw code instelt. Het gebeurtenislogboek heeft de waarde van deze eigenschap nodig om uw service te registreren als een geldige bron van gebeurtenissen.

Standaardlogboekregistratie van gebeurtenissen voor uw service inschakelen

  • Stel de AutoLog eigenschap voor uw onderdeel in op true.

    Notitie

    Deze eigenschap is standaard ingesteld op true. U hoeft dit niet expliciet in te stellen, tenzij u complexere verwerking bouwt, zoals het evalueren van een voorwaarde en vervolgens het instellen van de AutoLog eigenschap op basis van het resultaat van die voorwaarde.

Gebeurtenislogboekregistratie voor uw service uitschakelen

  • Stel de AutoLog eigenschap voor uw onderdeel in op false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Logboekregistratie instellen op een aangepast logboek

  1. Stel de eigenschap AutoLog in op false.

    Notitie

    U moet instellen AutoLog op onwaar om een aangepast logboek te kunnen gebruiken.

  2. Stel een exemplaar van een EventLog onderdeel in uw Windows-servicetoepassing in.

  3. Maak een aangepast logboek door de CreateEventSource methode aan te roepen en de brontekenreeks en de naam op te geven van het logboekbestand dat u wilt maken.

  4. Stel de Source eigenschap van het EventLog onderdeelexemplaren in op de brontekenreeks die u in stap 3 hebt gemaakt.

  5. Schrijf uw vermeldingen door toegang te krijgen tot de WriteEntry methode op het EventLog onderdeelexemplaren.

    De volgende code laat zien hoe u logboekregistratie instelt op een aangepast logboek.

    Notitie

    In dit codevoorbeeld krijgt een exemplaar van een EventLog onderdeel de naam eventLog1 (EventLog1 in Visual Basic). Als u in stap 2 een exemplaar met een andere naam hebt gemaakt, wijzigt u de code dienovereenkomstig.

    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
    

Zie ook