Rejestrowanie i definiowanie wpisów dziennika w składniku przepływu danych

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Niestandardowe komponenty przepływu IDTSComponentMetaData100 danych mogą wysyłać wiadomości do istniejącego wpisu w dzienniku, korzystając z PostLogMessage metody interfejsu. Mogą także prezentować użytkownikowi informacje, korzystając z FireInformation metody lub podobnych metod interfejsu IDTSComponentMetaData100 . Jednak takie podejście wiąże się z obciążeniem związanym z podnoszeniem i obsługą dodatkowych zdarzeń oraz zmusza użytkownika do przeszukiwania rozbudowanych komunikatów informacyjnych w poszukiwaniu tych, które mogą go zainteresować. Możesz użyć niestandardowego wpisu w dzienniku, jak opisano poniżej, aby udostępnić użytkownikom komponentu wyraźnie oznaczone informacje o niestandardowych dziennikach.

Rejestracja i użycie niestandardowego wpisu w logu

Rejestracja niestandardowego wpisu w dzienniku

Aby zarejestrować niestandardowy wpis logowy do użycia przez komponent, nadpisz metodę RegisterLogEntriesPipelineComponent klasy bazowej. Poniższy przykład rejestruje niestandardowy wpis w dzienniku oraz podaje nazwę oraz opis.

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  

Wyliczanie DTSLogEntryFrequency daje wskazówkę dotyczącą czasu wykonywania dotyczącą częstotliwości rejestrowania zdarzenia:

  • DTSLEF_OCCASIONAL: Zdarzenie jest rejestrowane tylko czasami, nie podczas każdej egzekucji.

  • DTSLEF_CONSISTENT: Zdarzenie jest rejestrowane stałą liczbą razy podczas każdego wykonywania.

  • DTSLEF_PROPORTIONAL: Zdarzenie jest rejestrowane wielokrotnie proporcjonalnie do ilości wykonanej pracy.

Powyższy przykład wykorzystuje DTSLEF_CONSISTENT fakt, że komponent oczekuje zaksięgowania wpisu raz na wykonanie.

Po zarejestrowaniu niestandardowego wpisu w logu i dodaniu instancji własnego komponentu do powierzchni projektanta przepływu danych, okno dialogowe Logowanie w projektantze wyświetla nowy wpis o nazwie "My Custom Component Log Entry" na liście dostępnych wpisów.

Logowanie do niestandardowego wpisu w dzienniku

Po zarejestrowaniu niestandardowego wpisu w dzienniku komponent może teraz rejestrować niestandardowe komunikaty. Poniższy przykład zapisuje niestandardowy wpis w logu podczas metody PreExecute , który zawiera tekst instrukcji SQL używanej przez komponent.

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  

Teraz, gdy użytkownik uruchamia pakiet, po wybraniu "Mój niestandardowy wpis w logu" w oknie dialogowym Logowanie , dziennik będzie zawierał wpis wyraźnie oznaczony jako "User::My Custom Component Log Entry." Ten nowy wpis w logu zawiera tekst instrukcji SQL, znacznik czasu oraz wszelkie dodatkowe dane zarejestrowane przez programistę.