Registrando e definindo entradas de log em um componente de fluxo de dados

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

Componentes personalizados de fluxo de dados podem enviar mensagens para uma entrada de registo existente utilizando o PostLogMessage método da IDTSComponentMetaData100 interface. Também podem apresentar informação ao utilizador utilizando o FireInformation método ou métodos semelhantes da IDTSComponentMetaData100 interface. No entanto, esta abordagem implica a sobrecarga de levantar e gerir eventos adicionais, e obriga o utilizador a filtrar mensagens informativas extensas em busca das mensagens que lhe possam ser do seu interesse. Pode usar uma entrada de registo personalizada, conforme descrito abaixo, para fornecer informações de registo personalizadas e distintas aos utilizadores do seu componente.

Registo e Utilização de uma Entrada de Registo Personalizada

Registo de uma Entrada de Registo Personalizada

Para registar uma entrada de registo personalizada para ser usada pelo seu componente, substitua o RegisterLogEntries método da PipelineComponent classe base. O exemplo seguinte regista uma entrada de registo personalizada e fornece um nome e uma descrição.

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  

A DTSLogEntryFrequency enumeração fornece uma pista para o tempo de execução sobre a frequência com que o evento será registado:

  • DTSLEF_OCCASIONAL: O evento é registado apenas por vezes, não durante todas as execuções.

  • DTSLEF_CONSISTENT: O evento é registado um número constante de vezes durante cada execução.

  • DTSLEF_PROPORTIONAL: O evento é registado um número de vezes proporcional à quantidade de trabalho realizado.

O exemplo acima usa DTSLEF_CONSISTENT porque o componente espera registar uma entrada uma vez por execução.

Após registar a entrada de registo personalizada e adicionar uma instância do seu componente personalizado à superfície do designer de fluxo de dados, a caixa de diálogo Registo no designer mostra uma nova entrada de registo com o nome "A Minha Entrada de Registo de Componente Personalizada" na lista de entradas de registo disponíveis.

Iniciar sessão numa Entrada de Registo Personalizada

Após registar a entrada de registo personalizada, o componente pode agora registar mensagens personalizadas. O exemplo abaixo escreve uma entrada de registo personalizada durante o PreExecute método que contém o texto de uma instrução SQL usada pelo componente.

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  

Agora, quando o utilizador executa o pacote, após selecionar a "Minha Entrada de Registo de Componente Personalizada" na caixa de diálogo de Registo , o registo conterá uma entrada claramente rotulada como "Utilizador::A Minha Entrada de Registo de Componente Personalizada." Esta nova entrada de registo contém o texto da instrução SQL, o carimbo temporal e quaisquer dados adicionais registados pelo programador.