Logboekregistratie en het definiëren van logboekvermeldingen in een gegevensstroomonderdeel

Van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Aangepaste dataflowcomponenten kunnen berichten naar een bestaande logboekvermelding sturen door gebruik te maken van de PostLogMessage methode van de IDTSComponentMetaData100 interface. Ze kunnen ook informatie aan de gebruiker presenteren door gebruik te maken van de FireInformation methode of vergelijkbare methoden van de IDTSComponentMetaData100 interface. Deze aanpak brengt echter de overhead met zich mee om extra gebeurtenissen te genereren en te verwerken, en dwingt de gebruiker om door uitgebreide informatieve berichten te zoeken naar berichten die voor hen interessant kunnen zijn. Je kunt een aangepaste logboekvermelding gebruiken zoals hieronder beschreven om duidelijk gelabelde aangepaste loggegevens aan gebruikers van jouw component te geven.

Registreren en gebruiken van een aangepaste logboekvermelding

Een aangepaste logboekvermelding registreren

Om een aangepaste logboekvermelding te registreren voor gebruik door jouw component, overschrijf je de RegisterLogEntries methode van de PipelineComponent basisklasse. Het volgende voorbeeld registreert een aangepaste logboekvermelding en geeft een naam en beschrijving.

using Microsoft.SqlServer.Dts.Runtime;  
...  
private const string MyLogEntryName = "My Custom Component Log Entry";  
private const string MyLogEntryDescription = "Log entry from My Custom Component ";  
...  
    public override void RegisterLogEntries()  
    {  
      this.LogEntryInfos.Add(MyLogEntryName,  
        MyLogEntryDescription,  
        Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT);  
    }  
Imports Microsoft.SqlServer.Dts.Runtime  
...  
Private Const MyLogEntryName As String = "My Custom Component Log Entry"   
Private Const MyLogEntryDescription As String = "Log entry from My Custom Component "  
...  
Public  Overrides Sub RegisterLogEntries()   
  Me.LogEntryInfos.Add(MyLogEntryName, _  
    MyLogEntryDescription, _  
    Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT)   
End Sub  

De DTSLogEntryFrequency enumeratie geeft een hint aan de runtime over hoe vaak het evenement zal worden geregistreerd:

  • DTSLEF_OCCASIONAL: Gebeurtenis wordt slechts soms gelogd, niet bij elke uitvoering.

  • DTSLEF_CONSISTENT: Gebeurtenis wordt een constant aantal keren gelogd bij elke uitvoering.

  • DTSLEF_PROPORTIONAL: Gebeurtenis wordt meerdere keren geregistreerd evenredig aan de hoeveelheid uitgevoerde werk.

Het bovenstaande voorbeeld gebruikt DTSLEF_CONSISTENT omdat de component verwacht dat er per uitvoering één keer een entry wordt geregistreerd.

Na het registreren van de aangepaste logboekvermelding en het toevoegen van een instantie van je aangepaste component aan het dataflow-ontwerpoppervlak, toont het loglogvenster in de designer een nieuwe logboekvermelding met de naam "My Custom Component Log Entry" in de lijst met beschikbare logboekvermeldingen.

Inloggen op een aangepaste logboekvermelding

Na het registreren van de aangepaste logboekvermelding kan de component nu aangepaste berichten loggen. Het onderstaande voorbeeld schrijft een aangepaste logboekvermelding tijdens de PreExecute methode die de tekst bevat van een SQL-instructie die door de component wordt gebruikt.

public override void PreExecute()  
{  
  DateTime now = DateTime.Now;  
  byte[] additionalData = null;  
  this.ComponentMetaData.PostLogMessage(MyLogEntryName,  
    this.ComponentMetaData.Name,  
    "Command Sent was: " + myCommand.CommandText,  
    now, now, 0, ref additionalData);  
}  
Public  Overrides Sub PreExecute()   
  Dim now As DateTime = DateTime.Now   
  Dim additionalData As Byte() = Nothing   
  Me.ComponentMetaData.PostLogMessage(MyLogEntryName, _  
    Me.ComponentMetaData.Name, _  
    "Command Sent was: " + myCommand.CommandText, _  
    now, now, 0, additionalData)   
End Sub  

Wanneer de gebruiker het pakket uitvoert, bevat het logboek na het selecteren van "Mijn Custom Component Log Entry" in het logvenster een vermelding duidelijk gelabeld als "User::My Custom Component Log Entry." Deze nieuwe logpost bevat de tekst van de SQL-instructie, de tijdstempel en eventuele extra gegevens die door de ontwikkelaar zijn gelogd.