Compartilhar via


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

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

Registrando 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 tempo de execução 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 executar o pacote, depois de selecionar "My Custom Component Log Entry" na caixa de diálogo Log, o log conterá uma entrada claramente rotulada como "User::My Custom Component Log Entry". Essa nova entrada de log contém o texto da instrução SQL, o carimbo de data/hora e quaisquer dados adicionais registrados pelo desenvolvedor.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN:


Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.

Consulte também

Conceitos

Log do SSIS (Integration Services)