Delen via


Diagnostische sporen

Traceringen zijn het publiceren van specifieke berichten die worden gegenereerd tijdens de uitvoering van de toepassing. Wanneer u tracering gebruikt, moet u een mechanisme hebben voor het verzamelen en vastleggen van de berichten die worden verzonden. Traceringsberichten worden ontvangen door luisteraars. Het doel van een listener is het verzamelen, opslaan en routeren van traceringsberichten. Listeners leiden de traceringsuitvoer naar een geschikt doel, zoals een logboek, venster of tekstbestand.

Een dergelijke listener, de DefaultTraceListener, wordt automatisch gemaakt en geïnitialiseerd wanneer tracering is ingeschakeld. Als u wilt dat traceringsuitvoer wordt omgeleid naar aanvullende bronnen, moet u extra traceringslisteners maken en initialiseren. De listeners die u maakt, moeten overeenkomen met uw individuele behoeften. U wilt bijvoorbeeld een tekstrecord van alle traceringsuitvoer. In dit geval maakt u een listener die alle uitvoer naar een nieuw tekstbestand heeft geschreven wanneer dit is ingeschakeld. Aan de andere kant wilt u mogelijk alleen uitvoer weergeven tijdens het uitvoeren van de toepassing. In dat geval kunt u een listener maken die alle uitvoer naar een consolevenster heeft geleid. De EventLogTraceListener kan traceringsuitvoer naar een gebeurtenislogboek leiden en de TextWriterTraceListener traceringsuitvoer naar een stream schrijven.

Tracering inschakelen

Als u traceringen tijdens transactieverwerking wilt inschakelen, moet u het configuratiebestand van uw toepassing bewerken. Hier volgt een voorbeeld.

<configuration>
<system.diagnostics>
     <sources>
          <source name="System.Transactions" switchValue="Warning">
               <listeners>
                    <add name="tx"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData= "tx.log" />
               </listeners>
          </source>
     </sources>
</system.diagnostics>
</configuration>

System.Transactions traceringen worden geschreven naar de bron met de naam System.Transactions. U kunt add gebruiken om de naam en het type van de traceluisteraar op te geven die u wilt gebruiken. In onze voorbeeldconfiguratie hebben we de listener 'tx' genoemd en de standaard .NET Framework-tracelister (XmlWriterTraceListener) toegevoegd als het type dat we willen gebruiken. Hiermee initializeData stelt u de naam van het logboekbestand voor die listener in. Daarnaast kunt u een volledig gekwalificeerd pad vervangen door een eenvoudige bestandsnaam.

Aan elk traceringsberichttype wordt een niveau toegewezen om de mate van belang aan te geven. Als het traceringsniveau van het app-domein gelijk is aan of lager is dan het niveau van een gebeurtenistype, wordt dat bericht gegenereerd. Het traceringsniveau wordt bepaald door de switchValue instelling in het configuratiebestand. De niveaus die zijn gekoppeld aan diagnostische traceringsberichten, worden gedefinieerd in de volgende tabel.

Traceerniveau Beschrijving
Kritisch Ernstige fouten, zoals de volgende, zijn opgetreden:

- Een fout die onmiddellijk verlies van gebruikersfunctionaliteit kan veroorzaken.
- Een gebeurtenis waarvoor een beheerder actie moet ondernemen om verlies van functionaliteit te voorkomen.
- Code loopt vast.
- Dit traceringsniveau kan ook voldoende context bieden voor het interpreteren van andere kritieke traceringen. Dit kan helpen bij het identificeren van de volgorde van bewerkingen die leiden tot een ernstige fout.
Fout Er is een fout opgetreden (bijvoorbeeld ongeldige configuratie of netwerkgedrag) die kan leiden tot verlies van gebruikersfunctionaliteit.
Waarschuwing Er bestaat een voorwaarde die vervolgens kan leiden tot een fout of kritieke fout (bijvoorbeeld toewijzing mislukt of een limiet nadert). Normale verwerking van fouten van gebruikerscode (bijvoorbeeld transactie afgebroken, time-outs, verificatie is mislukt) kan ook een waarschuwing genereren.
Gegevens Berichten die nuttig zijn voor het bewaken en diagnosticeren van de systeemstatus, het meten van prestaties of profilering, worden gegenereerd. Dit kunnen transactie- en opnamelevensgebeurtenissen zijn, zoals een transactie die wordt gemaakt of vastgelegd, het overschrijden van een significante grens of de toewijzing van belangrijke resources. Een ontwikkelaar kan vervolgens dergelijke informatie gebruiken voor capaciteitsplanning en prestatiebeheer.

Trackingscodes

De volgende tabel bevat de traceringscodes die door de System.Transactions infrastructuur worden gegenereerd. In de tabel zijn de traceringscode-identificatie, het EventType opsommingsniveau voor de tracering en de extra gegevens die zijn opgenomen in de TraceRecord voor de tracering inbegrepen. Daarnaast wordt het bijbehorende traceerniveau van de tracering ook opgeslagen in traceringsrecords.

TraceCode Type van evenement Extra gegevens in TraceRecord
TransactieAangemaakt Informatie TransactionTraceId
TransactieBepromoot Informatie Local TransactionTraceId, Gedistribueerde TransactionTraceId
InschrijvingAangemaakt Informatie TransactionTraceId, EnlistmentTraceId, EnlistmentType (durable/volatile), EnlistmentOptions
EnlistmentCallbackNegatief Waarschuwing TransactionTraceId, EnlistmentTraceId,

Callback (forcerollback/afgebroken/in twijfel)
TransactieRollbackOpgeroepen Waarschuwing TransactionTraceId
TransactieAfgebroken Waarschuwing TransactionTraceId
TransactieTwijfelachtig Waarschuwing TransactionTraceId
TransactieScopeGecreëerd Informatie TransactionScopeResult, wat het volgende kan zijn:

- Nieuwe transactie.
- Transactie is doorgegeven.
- Afhankelijke transactie geslaagd.
- Huidige transactie gebruiken.
- Geen transactie.

nieuwe huidige TransactionTraceId
TransactionScopeDisposed Informatie TransactionTraceId van de "verwachte" huidige transactie van het bereik.
TransactiebereikOnvolledig Waarschuwing TransactionTraceId van de "verwachte" huidige transactie van het bereik.
TransactionScopeNestedOnjuist Waarschuwing TransactionTraceId van de "verwachte" huidige transactie van het bereik.
TransactiebereikHuidigetransactieVeranderd Waarschuwing Oude huidige TransactionTraceId, andere TransactionTraceId
TransactionScopeTimeout Waarschuwing TransactionTraceId van de "verwachte" huidige transactie van het bereik.
AfhankelijkKloonAangemaakt Informatie TransactionTraceId, type van afhankelijke transactie die wordt gemaakt (RollbackIfNotComplete/BlockCommitUntilComplete)
Voltooien van AfhankelijkhedenClone Informatie TransactionTraceId
RecoveryComplete Informatie Resource Manager-GUID (van de basis)
Herinschrijven Informatie Resource Manager-GUID (van de basis)
TransactieGeserialiseerd Informatie TransactieTraceerId.
TransactieUitzondering Fout Uitzonderingsbericht
InvalidOperationException Fout Uitzonderingsbericht
Interne fout Kritisch Uitzonderingsbericht
Transfergebeurtenis Wanneer een transactie wordt gedeserialiseerd of gepromoveerd van een System.Transactions transactie naar een gedistribueerde transactie, worden de huidige ActivityID van de ExecutionContext en de gedistribueerde transactie-id geschreven.

Wanneer de DTC terugroept naar beheerde code, wordt de gedistribueerde transactie-id ingesteld als de ActivityID in de ExecutionContext voor de duur van de callback.
GeconfigureerdeStandaardTimeoutAangepast Waarschuwing Geen extra gegevens
TransactieTijdslimiet Waarschuwing De TransactionTraceId van de transactie die een time-out heeft.

Het XML-schema voor elk van de voorgaande extra gegevensitems heeft de volgende indeling.

TransactieTraceerIdentificator

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

< CloneIdentifier >

the clone id number

</CloneIdentifier>

</TransactionTraceIdentifier>

AanmeldingTraceIdentifier

<EnlistmentTraceIdentifier>

<ResourceManagerId>

string form of guid

</ResourceManagerId>

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

<CloneIdentifier >

the clone id number

</CloneIdentifier>

<TransactionTraceIdentifier>

<EnlistmentIdentifier>

the enlistment id number

</EnlistmentIdentifier>

</EnlistmentTraceIdentifier>

Resource Manager-identificatie

<ResourceManagerId>

string form of guid

</ResourceManagerId>

Beveiligingsproblemen voor tracering

Wanneer u als beheerder tracering inschakelt, worden gevoelige gegevens mogelijk naar een traceringslogboek geschreven dat standaard openbaar zichtbaar is. Als u mogelijke beveiligingsrisico's wilt beperken, moet u overwegen het traceerlogboek op te slaan op een veilige locatie die wordt beheerd door machtigingen voor toegang tot share- en bestandssysteemtoegang.