Partilhar via


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

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

Os componentes de fluxo de dados personalizados podem postar mensagens em uma entrada de log existente por meio do método PostLogMessage da interface IDTSComponentMetaData100. Eles também podem apresentar informações ao usuário através do método FireInformation ou de métodos semelhantes da interface IDTSComponentMetaData100. Entretanto, essa abordagem leva à sobrecarga pois eventos adicionais são gerados e manipulados, e força o usuário a examinar mensagens informativas detalhadas em busca de mensagens que possam ser do seu interesse. Você pode usar uma entrada de log personalizada, conforme descrito a seguir, para fornecer informações de log personalizadas com rótulos distintos a usuários de seu componente.

Registrando e usando uma entrada de log personalizada

Registrar uma entrada de log personalizada

Para registrar uma entrada de log personalizada a ser usada por seu componente, substitua o método RegisterLogEntries da classe base PipelineComponent. O exemplo a seguir registra uma entrada de log 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 enumeração DTSLogEntryFrequency fornece uma dica ao runtime sobre a frequência com que o evento será registrado:

  • DTSLEF_OCCASIONAL: o evento só é registrado às vezes, mas não em toda execução.

  • DTSLEF_CONSISTENT: o evento é registrado em um número constante de horas em toda execução.

  • DTSLEF_PROPORTIONAL: o evento é registrado um determinado número de vezes, que é proporcional à quantidade de trabalho concluído.

O exemplo anterior usa o DTSLEF_CONSISTENT pois o componente espera registrar uma só entrada em cada execução.

Depois de registrar a entrada de log personalizada e adicionar uma instância do seu componente personalizado na superfície do designer de fluxo de dados, a caixa de diálogo Log do designer exibe uma nova entrada de log com o nome "My Custom Component Log Entry" na lista de entradas de log disponíveis.

Registrando uma entrada de log personalizada

Depois do registro da entrada de log personalizada, o componente pode registrar mensagens personalizadas. O exemplo a seguir escreve uma entrada de log personalizada durante o método PreExecute que contém o texto de uma instrução SQL usado 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 usuário executa o pacote, depois de selecionar "Minha Entrada Personalizada de Log de Componente" na caixa de diálogo Log, o log conterá uma entrada claramente rotulado como "User::Minha Entrada Personalizada de Log de Componente". Esta nova entrada de log contém o texto da instrução SQL, o carimbo de data/hora e outros dados adicionais registrados em log pelo desenvolvedor.

Consulte Também

Log do SSIS (Integration Services)