Logga och definiera loggposter i en dataflödeskomponent

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Anpassade dataflödeskomponenter kan skicka meddelanden till en befintlig loggpost genom att använda PostLogMessage gränssnittets IDTSComponentMetaData100 metod. De kan också presentera information för användaren genom att använda FireInformation metoden eller liknande metoder i gränssnittet IDTSComponentMetaData100 . Detta tillvägagångssätt medför dock en överhead för att ta upp och hantera ytterligare händelser, och tvingar användaren att gå igenom utförliga informationsmeddelanden för de meddelanden som kan vara av intresse för dem. Du kan använda en anpassad loggpost som beskrivs nedan för att ge tydligt märkta anpassade logguppgifter till användare av din komponent.

Registrering och användning av en anpassad loggpost

Registrering av en anpassad loggpost

För att registrera en anpassad loggpost för användning av din komponent, åsidosätt RegisterLogEntries metoden för PipelineComponent basklassen. Följande exempel registrerar en anpassad loggpost och ger ett namn och en beskrivning.

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  

Uppräkningen DTSLogEntryFrequency ger en ledtråd om hur ofta händelsen kommer att loggas:

Exemplet ovan använder DTSLEF_CONSISTENT eftersom komponenten förväntar sig att logga en post en gång per exekvering.

Efter att ha registrerat den anpassade loggposten och lagt till en instans av din anpassade komponent på dataflödesdesignerns yta, visar loggningsdialogrutan i designern en ny loggpost med namnet "Min anpassade komponent loggpost" i listan över tillgängliga loggposter.

Logga in i en anpassad loggpost

Efter att ha registrerat den anpassade loggposten kan komponenten nu logga anpassade meddelanden. Exemplet nedan skriver en anpassad loggpost under PreExecute metoden som innehåller texten till en SQL-sats som komponenten använder.

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  

När användaren nu kör paketet, efter att ha valt "Min anpassade komponent loggpost" i loggningsrutan , kommer loggen att innehålla en post tydligt märkt som "Användare::Min anpassade komponent loggpost." Denna nya loggpost innehåller texten till SQL-satsen, tidsstämpeln och eventuell ytterligare data som utvecklaren har loggat.